thisSum는
루프 I의 시작 부분에서 리셋하지만 thisSum는 루프 J의 루프 J에 배열 [η] 요소를 추가로 유지하다.
일반적으로 나는 루프의 작동 방식을 이해하기 위해 값을 대체하고 값을 사용합니다.
스텝에 의해 최대 합을 얻기 위해 시도되고, 벡터 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
두번째 루프는 내가 : maxSum은 = 90 내가
3 루프 (10 제거) : maxSum은 = 100 (10 제거, -20) 그냥
당신 때문에 이것은 매우 느린 알고리즘입니다. 훨씬 빠른 알고리즘이 있습니다. –
'thisSum'은 정적이 아닙니다 (그렇지 않으면 실제로 * 정적으로 선언됩니다 *). 외부 루프가 실행될 때마다 다시 0으로 설정됩니다. – tux3