如题:求子数组的最大值之和并给出子数组的下标
参考文献:http://blog.csdn.net/bertzhang/article/details/7242497
http://blog.csdn.net/zsuguangh/article/details/6337410
下面给出一种方法:
#include "stdafx.h" #include<iostream> using namespace std; int maxsum(int a[],int n,int *start,int *end) { int laststart; int lastmax = a[0]; int max = 0; if(a == NULL || n == 0) { return NULL; } for(int i = 0; i< n; i++) { max = max + a[i]; if(max > lastmax) { lastmax = max; *end = i; } if(max <= 0 ) { max = 0; if(i < n) { laststart = i + 1; } } if(max == lastmax) { *start = laststart; } } return lastmax; } int main() { int array[]= {-1,2,-3,4,5,6,7,-9,-19,4,3}; int start = 0; int end = 0; cout<< maxsum(array,sizeof(array)/sizeof(int),&start,&end)<<endl; cout<<start<<" "<<end<<endl; system("pause"); return 0; }