最大のプロセス合計:マーク雑ス:
-
28-09-2020 - |
質問
ハイライトされた部分では、任意のインデックス「P」から始まる配列が「i」から始まり「P-1」で終わる配列よりも大きくなることはありません。
彼自身の例(下図の内側ループ)これは明らかに偽である。
i= 0とj= 3を奪う
[0]= -14、A [1]= -4、A [2]= -2、A [3]= -1を求めます。
p= 2の場合、「P」から「j」への部分列合計は、「i」よりも明らかに大きくなり、「P - 1」
weiss氏は、薄い空気からの仮定を引くようです( "jはIs Index iから始まる第1のインデックスが否定的になる最初のインデックスです")上記の中にはそれを意味するかもしれませんでした!確かに、間違いのみが「i」と「j」との間では否定的であるが、これのソースが発生した場合にのみ行われることができるところではない。これはどこから来ていますか?
助けてくれてありがとう!
解決
あなたは彼がどのアルゴリズムを説明しているかについて混乱していると思います。彼の説明はアルゴリズム2のためのものではなく、アルゴリズム4のために、再導入された虚数インデックスi
。
このインデックスをこのインデックスで書かせて、それを明確にする:
maxSubSum(array a):
maxSum = 0, thisSum = 0;
i = 0;
for j going from 0 to length(a)-1:
thisSum += a[j];
if thisSum > maxSum:
maxSum = thisSum;
else if thisSum < 0:
i = j+1;
thisSum = 0;
return maxSum;
.
このアルゴリズムでは、ThisSum <0、次にj
が実際に「Index i
から始まるサブシーケンスを否定的にする」の「最初のインデックス」であることがわかり、残りの請求は次のとおりです。特にこのアルゴリズムで行われない例では、このアルゴリズムでは発生できません(その場合はi=0
とj=3
はありません)。
所属していません cs.stackexchange