一 设计思想
我们设定的是一个3*3的二维数组,首先将第一纵列所有组合相加的情况找出,然后将所有情况看成一维数组,按一维数组的方法求出最大值,将所有最大值放入一个数组里,最后在求出最大的,
二 源程序
#include<iostream.h> int Largest(int list[],int length) { int i,max=list[0]; for(i=0;i<(length);i++) { if(list[i]>max) { max=list[i]; } } return max; } int paixv(int list[]) { int sum=0; int max=list[0]; for(int i=0;i<3;i++) { if(sum<=0) { sum=list[i]; } else { sum=sum+list[i]; } if(sum>max) { max=sum; } } return max; } int main() { int h=0; int a[3][3]; int b[100]; int c[100]; int d[100]; int e[100]; cout<<"please input 9 numbers:"; do { for(int l=0;l<3;l++) { cin>>a[h][l]; } h++; } while(h<3); b[0]=a[0][0]+a[1][0]; c[0]=a[0][0]+a[1][0]+a[2][0]; d[0]=a[1][0]+a[2][0]; b[1]=a[0][1]+a[1][1]; c[1]=a[0][1]+a[1][1]+a[2][1]; d[1]=a[1][1]+a[2][1]; b[2]=a[0][2]+a[1][2]; c[2]=a[0][2]+a[1][2]+a[2][2]; d[2]=a[1][2]+a[2][2]; e[0]=paixv(b); e[1]=paixv(c); e[2]=paixv(d); int sum=0; int max=a[0][0]; for(int i=0;i<3;i++) { if(sum<=0) { sum=a[0][i]; } else { sum=sum+a[0][i]; } if(sum>max) { max=sum; } } e[3]=max; int sum1=0; int max1=a[1][0]; for(int i=0;i<3;i++) { if(sum1<=0) { sum1=a[1][i]; } else { sum1=sum1+a[1][i]; } if(sum1>max1) { max1=sum1; } } e[4]=max1; int sum2=0; int max2=a[2][0]; for(int i=0;i<3;i++) { if(sum2<=0) { sum2=a[2][i]; } else { sum2=sum2+a[2][i]; } if(sum2>max2) { max2=sum2; } } e[5]=max2; int max3=Largest(e,6); cout<<"最大矩阵的和为:"<<max3; }
三 截图
四 实验总结
我们互相学习,互相讨论,同时也看了一下其他人的代码,借鉴他人的经验,通过交流,我们讨论除了一种方法,先纵后横,也是遍历所有情况,比较大小,本次变成受益匪浅。
原文:http://www.cnblogs.com/shishi1993-/p/4357197.html