POJ 1050 动态规划水题
2014-06-20 16:13
176 查看
思路:一开始想用dp[i][j]代表以它为结尾的最大子矩阵和,但实际上并不好实现,因为无法保证加进这一格后还是一个矩阵。所以把矩阵每行都组合起来,变成了n(n+1)/2个数列,然后就求所有数列中最大的子串和。找最大子串和为O(n)的,所以总体复杂度为O(n^3)。因为数据小,方法还是挺暴力的。#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=100+5,INF=1<<30;
int arr
,temp
;
int n;
int dp() { //找最大序列和
int dpp=temp[1];
int maxx=dpp;
for(int i=2;i<=n;i++) {
dpp=max(dpp+temp[i],temp[i]);
maxx=max(dpp,maxx);
}
return maxx;
}
int main () {
//freopen("in.txt","r",stdin);
while(cin>>n) {
int i,j,k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>arr[i][j];
int ans=-INF;
for(i=1;i<=n;i++) {
memset(temp,0,sizeof(temp));
for(j=i;j<=n;j++) {
for(k=1;k<=n;k++) {
temp[k]+=arr[j][k]; //temp数组代表从i行到j行组成的数列
}
ans=max(ans,dp());
}
}
cout<<ans<<endl;
}
return 0;
}
#include<cstdio>
#include<cstring>
using namespace std;
const int N=100+5,INF=1<<30;
int arr
,temp
;
int n;
int dp() { //找最大序列和
int dpp=temp[1];
int maxx=dpp;
for(int i=2;i<=n;i++) {
dpp=max(dpp+temp[i],temp[i]);
maxx=max(dpp,maxx);
}
return maxx;
}
int main () {
//freopen("in.txt","r",stdin);
while(cin>>n) {
int i,j,k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>arr[i][j];
int ans=-INF;
for(i=1;i<=n;i++) {
memset(temp,0,sizeof(temp));
for(j=i;j<=n;j++) {
for(k=1;k<=n;k++) {
temp[k]+=arr[j][k]; //temp数组代表从i行到j行组成的数列
}
ans=max(ans,dp());
}
}
cout<<ans<<endl;
}
return 0;
}
相关文章推荐
- POJ 1050 求最大子矩阵和 动态规划
- POJ 1050 动态规划
- poj 1050 To the Max(动态规划处理二维最大子段和)
- POJ 1050 求最大子矩阵和 动态规划
- POJ 1050 To the Max (最大连续区间和+暴力枚举,水题)
- poj 1050 求子矩阵之和 动态规划
- POJ 1050 To the Max (动态规划——求最大子矩阵和)
- POJ 3176 Cow Bowling 【动态规划】【水题】
- [ACM_动态规划] POJ 1050 To the Max ( 动态规划 二维 最大连续和 最大子矩阵)
- poj 1050动态规划+最大子矩阵和+二维化为一维来求最大子串和值
- (三) POJ1050,动态规划必做题目,经典程度五颗星。这个题目的前身就是:求最大子序列和。 先来看最大子序列和。有一串数,有正有负,如2,-1,5,4,-9,7,0,3,-5。求:这
- poj1050 To the Max (动态规划)
- POJ-1050 动态规划 子矩阵最大值,二位转一维处理
- poj1050 动态规划
- POJ 1050 To the Max(动态规划、最大子矩阵和)
- 动态规划练习题:POJ 1050
- 【动态规划】[POJ 1050]To the Max
- POJ 1050 二维动态规划转变成枚举加一维的动态规划!
- Poj 1050 动态规划
- poj入门水题--动态规划(DP)2533 Longest Ordered Subsequence 1088滑雪