题目要求:
返回一个二维整数数组中最大联通子数组的和。
输入一个二维整形数组,数组里有正数也有负数。
文件输出。
思路:和之前的动态规划相识,把二维数组转换为一维数组,先求每一个列的子数组和最大,最后在用正数就加,负数就跳过的方法独立判断
#includeusing namespace std;#include #include void main(){ int m,n,i,j,smark,mmark,t2; int sum; int up[100],down[100],t[100]; int a[100][100],b[100]; cout<<"输入二维数组的行"< >m; cout<<"输入二维数组的列"< >n; for(i=0;i >a[i][j]; } } //输入二维数组 for(i=0;i = 0;k--) { if (c[k] == b[k]) { smark = k; break; } } sum=max1; up[i]=smark; down[i]=mmark; t[i]=sum; } t2=t[0]; for(i=0;i+1 =up[i+1]) { t2+=t[i+1]; } for(j=up[i];j 0) t2+=a[i+1][j]; //判别独立正数 } } //文件输出 ofstream fout("D:\\input.txt",ios::binary); for(i=0;i