把数组每一位向后移动一位,最后一位放在第一位。循环多次,每次求其最大子数组,存放到新数组内,比较新数组中最大数,并输出。
#include <iostream.h> int Largest(int list[],int length) { int n,max=list[0];/ for(n=0;n<=(length-1);n++) { if(list[n]>max) { max=list[n]; } } return max; } int MaxSum2(int *A, int n) { int nStart = A[n-1]; int nAll = A[n-1]; for(int i = n-2;i>=0;--i) { if(nStart<0) nStart = 0; nStart += A[i]; if(nStart>=nAll) { nAll = nStart; } } return nAll; } int main(void) { int sum[5]={1,-2,-3,-4,5}; int sum2[15]={0}; int gg[5]={0}; int kk[5]={0}; int t; for(int k=0;k<5;k++) { t=sum[4]; for(int j=3;j>=0;j--) {sum[j+1]=sum[j];} sum[0]=t; gg[k]=MaxSum2(sum,5); } cout<<Largest(gg,5)<<endl; }
结对开发,是你潜力的开始,只要你投入进去你就会有不一样的收获,我们结对开发目前已经进行了几次了,每一次我们两个人都会进行激烈的讨论,然后对每一个人的思路进行验证,最后我们每次都能找出一种解决问题的方法。这一对于循环数组的问题我们又遇到了一些问题,问题一就是我们要怎样才能让它循,我们尝试了几种方法,最后找到了比较合适的。还有就是写代码时候遇到了一些问题,不过通过几次调试之后也得到了解决。感谢这么多次队友(程鹏远)的并肩作战。
原文:http://www.cnblogs.com/hushunli/p/4375109.html