设计思路:
1.首先计算出以第一个数为开头的所有子数组之和。
2.同时求出其中最大的子数据之和,并存入数组中。
3.依次这样计算,直到求完最后一个。
4.再将存放子数组之和的数组进行比较,输出最大的子数组之和。
代码:
//软件工程四 课堂练习 康娜 #include<iostream> using namespace std; void main() { int a=0,b=0,i,j,m=0,num[10],sym,r[10]={0,0,0,0,0,0,0,0,0,0}; cout<<"请输入数组中元素的取值范围:(a<b)"; cin>>a>>b; for(i=0;i<10;i++) { sym=rand()%2; if(sym==0) num[i]=rand()%(b-a)+a; else num[i]=-(rand()%(b-a)+a); } cout<<"获得随机数组为"<<endl; for(i=0;i<10;i++) { cout<<num[i]<<" "; } for(i=0;i<10;i++) { m=num[i]; int sum=0; for(j=i;j<10;j++) { sum=sum+num[j]; if(sum>m) { m=sum; } } r[i]=m; } m=r[0]; for(i=0;i<10;i++) { if(r[i]>=m) m=r[i]; } cout<<endl; cout<<"最大的子数组之和为:"<<m<<endl; }
程序效果截图:
项目计划日志:
时间记录日志:
缺陷记录日志: