コード行 8 の thisSum は、ループiの開始部分でリセットされます。
しかし、ループ j の thisSum は、ループ j に配列 a[ ] 要素を追加し続けています。
通常、ループがどのように機能するかを理解するために、値を置き換えて値を想定します。
ベクトル a に 3 つの int 要素 10,-20,100 があると仮定します
したがって、a.size() = 3
//maxSum is initialized in the function
int maxSum = 0;
//Start First i loop
int i = 0; i < 3;
int thisSum = 0;
int j = i = 0; j < 3;
thisSum += a[0];
//thisSum = 10
//10 > 0
if (thisSum > maxSum) maxSum = thisSum = 10;
int j = i = 1; j < 3;
thisSum += a[1];
//thisSum = -10
// -10 not > 10
int j = i = 2; j < 3;
thisSum += a[2];
//thisSum = 90
//90 > 10
if (thisSum > maxSum) maxSum = thisSum = 90;
//End First i loop
//Start 2nd i loop
int i = 1; i < 3;
int thisSum = 0;
int j = i = 1; j < 3;
thisSum += a[1];
//thisSum = -20
//-20 not > 90
int j = i = 2; j < 3;
thisSum += a[2];
//thisSum = 80
//80 not > 90
//End 2nd i loop
//Start 3rd i loop
int i = 2; i < 3;
int thisSum = 0;
int j = i = 2; j < 3;
thisSum += a[2];
//thisSum = 100
//100 > 90
if (thisSum > maxSum) maxSum = thisSum = 100;
//End 3rd i loop
//return 100
//return maxSum
関数の概念は、最小のインデックス要素から最大のインデックス引数までアイテムを段階的に削除して、最大合計を取得しようとすることです。
1 回目のループ i : maxSum = 90
2 番目のループ i : maxSum = 90 (10 を削除)
3 番目のループ i : maxSum = 100 (10、-20 を削除)