一、题目
输出二维环形数组中最大子数组和
二、设计思想
把解决一维环形数组,和普通二维数组的方法结合起来街是解决二维环形数组的方法。
三、源代码
#include<iostream.h> #include<time.h> #include<stdlib.h> int qiumax(int arry[],int max) { int i; long sum; for(i=0;i<5;i++) { for(i=0;i<5;i++) { arry[i+5]=arry[i]; } } for(int j=0;j<5;j++) { sum=0; for(int k=j;k<5+j;k++) { sum=sum+arry[k]; if(sum>max) { max=sum; } } } return max; } int main() { int qiumax(int arry[10],int max); int i,j,k; int arry[5][10]={{1,1,1,-1,-1},{1,1,1,-1,-1},{1,1,1,-1,-1},{1,1,1,-1,-1},{1,1,1,-1,-1}}; int arry1[10]={0,0,0,0,0,0,0,0,0,0}; int max=arry[0][0]; for(i=0;i<5;i++) { for(j=0;j<5;j++) { arry[i][j+5]=arry[i][j]; } } for(i=0;i<5;i++) { for(j=i;j<5;j++) { for( k=0;k<5;k++) { arry1[k]+=arry[j][k]; } max=qiumax(arry1,max); } for(k=0;k<10;k++) { arry1[k]=0; } } cout<<"MAX IS"<<" "<<max<<endl; return 0; }
四、结果截图
五 实验感想
这次实验感觉就是前两次的结合嘛,首先遍历所有竖的,将所有的将所有情况求出,让后调用一维环型数组的
方法,求出后比较大小,求出最大的,关键是把以前的综合起来。