组员 石鹤李海超
一、题目
输出一维环形数组中最大子数组的和 和最大子数组的位置
二、设计思想
把原数组扩大一倍,再把原数组放到后边,只需改变上次试验是循环变量即可求出最大子数组的和。
三、源代码
#include<iostream.h> #include<time.h> #include<stdlib.h> int main() { int arry[20]; int start,end,i; long sum,max; cout<<"Please input 10 numbers:"<<endl; for( i=0;i<10;i++) { cin>>arry[i]; arry[i+10]=arry[i]; } max=arry[0]; start=0; end=0; for(int j=0;j<10;j++) { sum=0; for(int k=j;k<10+j;k++) { sum=sum+arry[k]; if(sum>max) { max=sum; start=j+1; end=k+1; } } } cout<<"MAX IS"<<" "<<max<<endl; cout<<"START:"<<"The"<<" "<<start<<"th"<<" "<<"number"<<" "<<"END:"<<"The"<<" "<<end%10<<"th"<<" "<<"number"<<endl; cout<<"These numbers are:"; for(int c=0;c<end-start+1;c++) { cout<<arry[start+c-1]<<" "; } }
四、结果截图
五、实验心得
实验中没有遇到太大问题,我俩显示讨论得出了设计思想,然后经过对上次题目的改进的除了这次试验的程序,运行正确。
希望以后继续进步。
六、相片