输出整数数组中 最大的子数组的结果
今天课堂上老师布置的任务是 编写程序 输出整数数组中 最大的子数组;
int i,r,u=0,w,q,max,sum=0; max=a[0]; for(i=u;i<j;i++) { for(r=u;r<=i;r++) { sum=a[r]+sum; } if(max<sum) { max=sum; w=u; q=i; } sum=0; if(i==j-1) {u++;i=u-1;} } cout<<"子数组为:"; for(r=w;r<=q;r++) { cout<<a[r]<<" "; } return max; }
开始我们我们就是输入5个数,然后 遍历寻找最大的;后来利用for循环语句;再到后来if(i==j-1) {u++;i=u-1;}的时候,
我们混乱了 一下写成了if(i==j-1) {u++;i=u-;}然后每次输出的结果只有第一个数。后来才发现的问题;
课下又实现了对最大子数组的记录并且修改完善;
int max_shuzu(int a[],int j) { if(a==NULL) return -1; else { int i,k=0,sum=0,max; for(i=0;i<j;i++) { sum=sum+a[i]; if(max<sum) { max=sum; } if(i==j-1) { i=k++; i=i-1; sum=0; } } return max; } } int main(int argc, char *argv[]) { int a[5]={1,2,4,2,3}; cout<<"最大和为:"<<max_shuzu(a,5); return 0; }