POJ 1050 动态规划
2015-04-22 22:50
344 查看
#include <cstdio> #include <iostream> #include <algorithm> #include <queue> #include <stack> #include <climits> #include <cstring> #include <cmath> #include <map> #include <set> using namespace std; int n; int a[105][105]; int dp[105][105]; int sum[105][105]; int main(){ while(scanf("%d",&n)!=EOF){ for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ scanf("%d",&a[i][j]); } } memset(dp,0,sizeof(dp)); for(int j = 1;j <= n;j++){ //j列的和 for(int i = 1;i <= n;i++){ sum[j][i] = sum[j][i-1] + a[i][j]; } } for(int i = 1;i <= n;i++){ for(int j = i;j <= n;j++){ int right = 0; for(int k = 1;k <= n;k++){ if(right >= 0){ right += sum[k][j] - sum[k][i-1]; } else{ right = sum[k][j] - sum[k][i-1]; } dp[i][j] = max(dp[i][j],right); } } } int ans = -INT_MAX; for(int i = 1;i <= n;i++){ for(int j = i;j <= n;j++){ if(dp[i][j] > ans){ ans = dp[i][j]; } } } cout << ans << endl; } return 0; }
相关文章推荐
- POJ 1050 To the Max -- 动态规划
- 【动态规划】[POJ 1050]To the Max
- POJ 1050 To the Max -- 动态规划
- poj 1050 To the Max(动态规划处理二维最大子段和)
- 动态规划练习题:POJ 1050
- (三) POJ1050,动态规划必做题目,经典程度五颗星。这个题目的前身就是:求最大子序列和。 先来看最大子序列和。有一串数,有正有负,如2,-1,5,4,-9,7,0,3,-5。求:这
- POJ 1050 二维动态规划转变成枚举加一维的动态规划!
- POJ 1050 To the Max (动态规划——求最大子矩阵和)
- POJ-1050 动态规划 子矩阵最大值,二位转一维处理
- POJ 1050-To the Max (动态规划)
- poj 1050--动态规划
- poj1050 动态规划 求二维数组中子矩阵和的最大值
- poj1050 动态规划
- POJ 1050 动态规划水题
- POJ 1050 求最大子矩阵和 动态规划
- poj 动态规划之1050 To the Max
- poj1050 To the Max (动态规划)
- [ACM_动态规划] POJ 1050 To the Max ( 动态规划 二维 最大连续和 最大子矩阵)
- POJ 1050 求最大子矩阵和 动态规划
- POJ 1050 To the Max(动态规划、最大子矩阵和)