算法1:三重循环暴力求解法
#include <stdio.h> int maximum_segment_sum(int array[],int n) { int this_sum = 0; int max_sum = 0; int i,j,k; for(i = 0;i < n;i++) {//分别以第一个第二个元素开始 for(j = i;j < n;j++) {//不停的在这个串上多加几个元素 this_sum = 0; for(k = i;k <= j;k++) {//遍历求和 this_sum += array[k]; } if(this_sum > max_sum) { max_sum = this_sum; } } } return max_sum; } int main() { int array[7] = {1,-5,3,4,-2,-3,10}; int result = 0; result = maximum_segment_sum(array,7); printf("%d",result); return 0; }
算法2:二重循环求解
#include <stdio.h> int maximum_segment_sum(int array[],int n) { int this_sum = 0; int max_sum = 0; int i,j,k; for(i = 0;i < n;i++) { this_sum = 0; for(j = i;j < n;j++) { this_sum += array[j]; if(this_sum > max_sum) { max_sum = this_sum; } } } return max_sum; } int main() { int array[7] = {1,-5,3,4,-2,-3,10}; int result = 0; result = maximum_segment_sum(array,7); printf("%d",result); return 0; }
算法3:分治法