上の値の最大値の合計を計算します。は、次のように私はデータを持っている任意の30日間期間
Date Value
2011-01-01 1
2011-01-02 5
2011-01-03 30
.....
2012-01-01 4
私は、値の合計の最大値を持っている私のデータ内のどの30日の期間を計算します。
私の質問が理にかなっているかどうかはわかりませんが、私は良い数学の頭を持っていないので説明するのはかなり難しいです。
おかげ スティーブ
上の値の最大値の合計を計算します。は、次のように私はデータを持っている任意の30日間期間
Date Value
2011-01-01 1
2011-01-02 5
2011-01-03 30
.....
2012-01-01 4
私は、値の合計の最大値を持っている私のデータ内のどの30日の期間を計算します。
私の質問が理にかなっているかどうかはわかりませんが、私は良い数学の頭を持っていないので説明するのはかなり難しいです。
おかげ スティーブ
これはあなたのために行う必要があります。それは、ゼロベースのアレイシステムを想定しています。
ここsum <- 0 for i = 0 to 29 sum <- sum + value(i) max <- sum start <- 0 for i = 30 to value.lengh-1 sum <- sum - value(i-30) + value(i) if sum > max then max <- sum start <- i-29
max
30の連続した値の最大値の合計が含まれているとstart
は、その30日間の最大実行の開始点が含まれています。
ありがとう、私はこの解決策を持っており、それは私のための治療を働く。私はまださらなるテストをする必要がありますが、それは私が何をしているのです! –
擬似コード:
MaxStartDate = FirstDate
MaxTotal = -1 (something that is definitely below your possible total)
for n=0 to lastDate-30
{
tempMax = 0
for m=n to n+29
tempMax = tempMax + date(m)
if tempMax > MaxTotal
{
MaxTotal = tempMax
MaxStartDate = date(n)
}
}
ループが終了するため、MaxTotalはあなたの最高の30日間の合計とするとMaxStartDateは30日のセットの最初の日になりますとき。 max_sum
の
私のポストの上のコードはよりエレガントですが、エラーがあり、コメントできません....最後にstart_date = date(i + 1)は正しい行ではありませんstart_date = date(30 + i) 。 –
for first 30 days in your data, compute the sum of all values
let this be called as max_sum
let start_date be the first date in the input data
Loop 'i' from 1 to (total dates - 30)
temp_sum = (temp_sum + value of date (30+i) - value of date (i))
if max_sum < temp_sum
max_sum = temp_sum
start_date= ith date
最終値は開始点としてstart_date
有する任意の30日間の期間にわたる値の最大合計です。
-1;これには論理的なエラーがいくつかあります。最初のジャスティン・ポールソンは以下のことを言います。また、連続した30日間の期間を一貫して保持するわけでもありません。 max_sumを更新するのは、条件が満たされたときだけです。多くの場合、それは満たされません。エラーを修正したり、間違っていると私に確信した場合は、-1を削除します。 – andand
あなたの悩みは?実行中の30日の合計値を計算するか、最大値を見つけるか? –
日付の形式はYYYY-MM-DDとしますか?そうでなければ意味がない。データは日付順であり、日付は欠落していますか? – gbulmer
コメントありがとう!最大値は私が何をしたかです。日付形式はYYYY-MM-DDです。はい、日付は欠落していません。 –