51nod 1051 最大子矩阵和 dp
来源:互联网 发布:上海大学乐乎论坛 编辑:程序博客网 时间:2024/04/30 03:09
题意:
一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值。
例如:3*3的矩阵:
-1 3 -1
2 -1 3
-3 1 2
和最大的子矩阵是:
3 -1
-1 3
1 2
分析:
三重循环,类似于求解一维中的最大连续和一样的dp问题,只不过换成了二维而已。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>using namespace std;const int maxn = 505;int n, m;long long p[maxn][maxn];//p[i][j] = a[i][1]+a[i][2]+.....+a[i][j]int main(){while(scanf("%d %d", &m, &n)==2) { memset(p, 0, sizeof(p)); for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { int t; scanf("%d", &t); p[i][j] = p[i-1][j] + t; } }// for(int i = 1 ; i <= n ; i++)// {// for(int j = 1 ; j <= m ; j++)// {// cout<<p[i][j]<<" ";// }// cout<<endl;// } int maxn = 0; for(int i = 1; i <= n; i++) { for(int j = i; j <= n; j++) { int sum = 0; for(int k = 1; k <= m; k++) { sum += (p[j][k] - p[i-1][k]); if(sum < 0) sum = 0; if(sum > maxn) maxn = sum; } } } printf("%d\n", maxn); } return 0;}
0 0
- [51nod 1051 最大子矩阵和]前缀和+dp
- 51nod 1051 最大子矩阵和 dp
- 【51Nod】1051 - 最大子矩阵的和(dp)
- 51Nod--1051最大子矩阵和(DP入门)
- 51nod 1051 最大子矩阵和【dp】
- 51nod 1051 最大子矩阵和(基础dp)
- 51 Nod 1051 最大子矩阵和 (DP)
- 51nod 1051 最大子矩阵和 (dp )
- 51Nod-1051 最大子矩阵和【最大子段和+DP】
- 51nod 1051 最大子矩阵和
- 51nod 1051 最大子矩阵和
- 51nod 1051 最大子矩阵和
- 51Nod 1051 最大子矩阵和
- 51nod 1051 最大子矩阵和
- 51 nod 1051 最大子矩阵和
- 51nod 1051 最大子矩阵和
- 51nod 1051 最大子矩阵和
- 51Nod 1051 最大子矩阵和(二维最大字段和dp)
- android 浅谈
- 欢迎使用CSDN-markdown编辑器
- c++拷贝函数
- prototype.js中Function.prototype.bind方法浅解
- cocos2dx 3.3 AssetsManager测试更新
- 51nod 1051 最大子矩阵和 dp
- 杭电题库刷题记录2016
- HTTP Caching 优化网站
- JDK7.0安装与配置
- hdu1217 Arbitrage (floyd)
- 中文分词之HMM模型详解
- ssm maven配置
- 论__大量文本内容去重的方式
- 快速排序---C语言实现