返回一个二维整数数组中最大子数组的和
要求:
1.输入一个二维整形数组,数组中有正有负
2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和
3.求所有子数组的和的最大值
实验思路
根据老师课上给出的3*6的数据 我们决定设计一个3*6的二维数组进行计算,依次进行比较将最大子数组的和返回
代码
#include <iostream.h> int main() { int a[3][6];//定义一个3*6的二维数组 int max; int s;//求和 int count; int b[3][7]; cout<<"请输入二维数组(3*6)中的元素:"<<endl; for(int i=0;i<3;i++) { for(int j=0;j<6;j++) { cin>>a[i][j]; } } for(i=0;i<3;i++) { count=0; for(int j=0;j<6;j++) { s=0; for(int l=0;l<6-j;l++) { s=s+a[i][j+l]; b[i][count+l]=s; } count=count+6-j; } } //求最大数 max=b[0][0]; for(int j=0;j<7;j++) { for(i=0;i<3;i++) { s=0; for(int r=0;r<3-i;r++) { s=s+b[r+i][j]; if(max<s) { max=s; } } } } cout<<"最大子数组为:"<<max<<endl; cout<<endl; return 0; }
结果截图
二人结对:张宾 王驰