【动态规划】[POJ 1050]To the Max
就是最大矩阵和,如果直接爆搜复杂度就是
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 100;
int sum[MAXN+10][MAXN+10][MAXN+10], dp[MAXN+10];
int main(){
int n;
scanf("%d", &n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d", &sum[j][j][i]);
int ans = 0;
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++){
for(int k=1;k<=n;k++)
sum[i][j][k] = sum[i][j-1][k]+sum[j][j][k];
for(int k=1;k<=n;k++)
ans = max(ans, (dp[k] = (dp[k-1]<0?sum[i][j][k]:dp[k-1]+sum[i][j][k])));
}
printf("%d\n", ans);
return 0;
}