动态规划-最大子矩阵和
2016-01-19 00:58
246 查看
求输入一个矩阵的最大子矩阵和
输入
输出
输入示例
输出示例
友情链接:具体讲解
输入
第1行:M和N,中间用空格隔开(2 <= M,N <= 500)。 第2 - N + 1行:矩阵中的元素,每行M个数,中间用空格隔开。(-10^9 <= M[i] <= 10^9)
输出
输出和的最大值。如果所有数都是负数,就输出0。
输入示例
3 3 -1 3 -1 2 -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; }
友情链接:具体讲解
相关文章推荐
- uva 10929 - You can say 11
- (一二一)第十章复习题
- Substring with Concatenation of All Words
- javascript捕获键盘组合事件
- (一二〇)抽象数据类型
- 疾病尚需用猛药
- 【C语言】冒泡排序及优化
- (一一九)类作用域
- 学习java的道路
- (一一八)对象数组
- hypervisor on vehicle
- 设计模式之代理模式(二结构型)
- (一一七)this指针
- http servlet服务器和android客户端(二)第一个android客户端
- 单例模式的应用
- 进程间通信(IPC) 之 共享内存 和 闲扯其他一些东西
- python3 crontab 下运行python输出中文失败
- MonoBehaviour继承类及其重要方法
- 敏捷开发解决方案
- 敏捷团队的规范与准则