一 设计思想
我们设定的是一个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; }
三 截图
四 实验总结
通过我们两个人的讨论,以及上课同学们的提示,我们想出了一种方法,也是通过遍历的方法,并且合并成一个数组,
然后由海超进行操作,我在旁边看着,因为他的编程水平比较高,最后一起测试了一下,感觉编程最重要的还是idea,有
了想法,实现不难,需要多练