返回一个首尾相连的二维数组的最大子数组的和
2015-04-22 13:22
253 查看
1.编程思路:根据以前的首尾相连的一维数组的最大子数组求出每一行的最大子矩阵,然后再两行相加,求出最大子矩阵,一直到所有的行相加,求出最大子矩阵。比较其中最大的子矩阵值,最后输出最大子矩阵和的值;
2.代码:
3.结果截图:
4.总结:思路很重要,这个是根据以前的思路推出来的,思路出来了,程序就更好写了
陈杰:思路以及程序编写
孟祥娟:测试以及博客发表
2.代码:
#include<iostream> #include <ctime> #include <cstdlib> #define MAX 10000 using namespace std; int Max(int b[]) { int m[MAX],n=0,p=0; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { n=n+b[i+j]; m[p]=n; p++; } n=0; } int max=m[0]; for(int i=0;i<p;i++) { if(m[i]>max) max=m[i]; } return max; } int main() { int k[MAX],a[4][8],h[8]; int i; int j; cout<<"二维矩阵为:"<<endl; for(i=0;i<4;i++) { for(j=0;j<4;j++) { a[i][j]=rand()%100-50; a[i][j+4]=a[i][j]; cout<<a[i][j]<<" "; } cout<<endl; } for(i=0;i<4;i++) { k[i]=Max(a[i]); } int q=4; for(i=0;i<3;i++) { int t=0; for(j=0;j<8;j++) { h[t]=a[i][j]+a[i+1][j]; t++; } k[q]=Max(h); q++; } for(i=0;i<2;i++) { int t=0; for(j=0;j<8;j++) { h[t]=a[i][j]+a[i+1][j]+a[i+2][j]; t++; } k[q]=Max(h); q++; } int t=0; i=0; for(j=0;j<8;j++) { h[t]=a[i][j]+a[i+1][j]+a[i+2][j]+a[i+3][j]; t++; } k[q]=Max(h); q++; cout<<endl; int max=k[0]; for(i=0;i<q;i++) { if(k[i]>max) max=k[i]; } cout<<"最大子矩阵的值为:"; cout<<max<<endl; return 0; }
3.结果截图:
4.总结:思路很重要,这个是根据以前的思路推出来的,思路出来了,程序就更好写了
陈杰:思路以及程序编写
孟祥娟:测试以及博客发表
相关文章推荐
- 返回一个二维数组中最大联通子数组的和
- 返回一个首尾相连的整数数组中最大子数组的和
- 返回一个整数数组中最大子数组的和(数组首尾相连)
- 返回一个二维数组最大联通子数组的和
- 返回一个二维数组中最大联通子数组的和
- 返回一个首尾相连的一位数组中最大子数组的和
- 返回一个首尾相连的整数数组中最大子数组的和
- 返回一个二维数组中的最大联通子数组(补)
- 返回一个二维数组最大联通子数组的和
- 返回一个整数数组中最大子数组的和(数组首尾相连)
- [0126] 返回一个数组中最大的数
- 有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值。
- 返回一个一维整数环形数组中最大子数组的和
- 有一个二维数组整形数组中,每一行都有一个最大值,编程求出这些最大值以及他们的和
- 编写一个通用程序,将二维数组含有最大元素的列与第0列元素对调。例如,原数组和调换后的目标数组为
- 返回一个二维整数数组中最大子数组的和1
- 给定一个数组,返回最大子数组的累加和并且返回该子数组
- 返回一个整数数组中最大子数组的和
- 结对编程之返回一个二维数组中所有子矩阵和的最大值
- 数组3——返回二维数组中最大联通子数组的和