动态规划-最大子矩阵和
来源:互联网 发布:布鲁克大学 知乎 编辑:程序博客网 时间:2024/06/04 14:05
求输入一个矩阵的最大子矩阵和
输入
第1行:M和N,中间用空格隔开(2 <= M,N <= 500)。第2 - N + 1行:矩阵中的元素,每行M个数,中间用空格隔开。(-10^9 <= M[i] <= 10^9)
输出
输出和的最大值。如果所有数都是负数,就输出0。
输入示例
3 3-1 3 -12 -1 3-3 1 2
输出示例
7
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;long map[505][505];long dir[505][505];int main(){ int n,m; int i,j,k; while (~scanf("%ld%ld",&m,&n)) { memset(map,0,sizeof (map)); memset(dir,0,sizeof (dir)); for (i=1; i<=n; i++) for (j=1; j<=m; j++) { scanf ("%d",&map[i][j]); if (map[i][j]<0)k++; if (i!=1) dir[i][j]=map[i][j]+dir[i-1][j]; else dir[i][j]=map[i][j]; } if (k==n*m){printf("0\n"); continue;} long Max=0,sum=0;printf("r %d r",dir[4][3]); for (i=0; i<=n; i++)//起始行 { for (j=i+1; j<=n; j++)//结束行 { // printf("%d ",dir[i][j]); sum=0; for (k=1; k<=m; k++) { int t=dir[j][k]-dir[i][k]; sum+=t; if (sum>Max) Max=sum; if (sum<0) sum=0; } } } printf("%ld\n",Max); } return 0;}
友情链接:具体讲解
0 0
- 动态规划 最大子矩阵的和
- 动态规划-最大子矩阵和
- poj1050(动态规划+最大子矩阵和)
- 动态规划---最大子段和&最大子矩阵和
- 最大子序列和+最大子矩阵-动态规划-无
- 动态规划 最大子矩阵
- 【动态规划】最大子矩阵
- 动态规划-最大子矩阵
- 动态规划:最大子矩阵
- 动态规划 最大子矩阵
- 动态规划----最大子矩阵
- 动态规划最大子矩阵
- 【动态规划】求二维矩阵的最大和子矩阵
- 【动态规划】最大连续序列和最大子矩阵
- 动态规划--最大字段和-最大子矩阵
- 动态规划---最大子段和,最大子矩阵和,最大m子段和
- 动态规划——最大子矩阵和
- 动态规划——最大子矩阵和 收藏
- http servlet服务器和android客户端(二)第一个android客户端
- (一一七)this指针
- (一一八)对象数组
- 学习java的道路
- (一一九)类作用域
- 动态规划-最大子矩阵和
- (一二〇)抽象数据类型
- 疾病尚需用猛药
- (一二一)第十章复习题
- 碰撞器,,
- (一二一)第十章编程练习
- UIView动画——钟表的制作
- Unity3d 综合性能窍门
- 错误解决方案:FATAL: Error inserting cmemk (/lib/modules/2.6.37/kernel/drivers/dsp/cmemk.ko): Bad address