POJ 1050 二维动态规划转变成枚举加一维的动态规划!

#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 二维动态规划转变成枚举加一维的动态规划!

相关文章:

你感兴趣的文章:

标签云: