최대 연속 서브 그룹
12535 단어 알고리즘
폭력 법
public int MaxSubArray(int[] A, int n) {
int maxSum = A[0];
int currSum;
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
currSum = 0;
for (int k = i; k <= j; k++) {
currSum += A[k];
}
if (currSum > maxSum) {
maxSum = currSum;
}
}
}
return maxSum;
}
분 치 법
public int MaxAddSub(int[] a, int from, int to) {
if (to == from) {
return a[from];
}
int middle = (from + to) / 2;
int m1 = MaxAddSub(a, from, middle);
int m2 = MaxAddSub(a, middle+1, to);
int left = a[middle];
int now = a[middle];
for (int i = middle-1; i >= from; i--) {
now += a[i];
left = max(left, now);
}
int right = a[middle+1];
now = a[middle+1];
for (int i = middle+2; i <= to; i++) {
now += a[i];
right = max(right, now);
}
int m3 = left + right;
return max(max(m1, m2), m3);
}
동적 계획
public int MaxAddSub2(int[] a) {
int result = a[0];
int sum = a[0];
for (int i = 1; i < a.length; i++) {
if (sum > 0) {
sum += a[i];
} else {
sum = a[i];
}
if (sum > result) {
result = sum;
}
}
return result;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.