poj 1157 LITTLE SHOP OF FLOWERS——简单DP
2011-08-03 11:57
399 查看
这段时间都在做DP啊啊……
大意:有F朵花和V个花瓶,F<V,不同的花在不同的花瓶里面观赏价值不一样,每个花瓶只能插一束花,而且花要按顺序插。求最大观赏价值。
这个题关键就是有负值,注意初始化,在代码里面说把。。
状态转移方程:
dp[i][j]表示把i朵花插到j个花瓶里面能获得的最大美学价值
则dp[i][j]=max(dp[i][j-1],dp[i-1][j-1]+map[i][j])
PS:我现在都没明白怎么看题目满足最优子结构性质……汗啊啊啊啊啊……
大意:有F朵花和V个花瓶,F<V,不同的花在不同的花瓶里面观赏价值不一样,每个花瓶只能插一束花,而且花要按顺序插。求最大观赏价值。
这个题关键就是有负值,注意初始化,在代码里面说把。。
状态转移方程:
dp[i][j]表示把i朵花插到j个花瓶里面能获得的最大美学价值
则dp[i][j]=max(dp[i][j-1],dp[i-1][j-1]+map[i][j])
PS:我现在都没明白怎么看题目满足最优子结构性质……汗啊啊啊啊啊……
Problem:[/b] 1157 | User:[/b] a27400 | |
Memory:[/b] 484K | Time:[/b] 32MS | |
Language:[/b] G++ | Result:[/b] Accepted |
#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #define INF 10000 int dp[110][110]; int map[110][110]; int max(int a,int b) { return a>b?a:b; } int main(void) { int n,m; scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { scanf("%d",&map[i][j]); } for(int i=0;i<=n;i++) for(int j=0;j<i;j++) dp[i][j]=-INF;//这个地方的初始化要注意!! for(int j=1;j<=m;j++) for(int i=1;i<=-max(-n,-j);i++) { dp[i][j]=max(dp[i][j-1],dp[i-1][j-1]+map[i][j]); } printf("%d\n",dp [m]); }
相关文章推荐
- poj 1157 LITTLE SHOP OF FLOWERS 【简单DP】
- POJ 1157 LITTLE SHOP OF FLOWERS (插画的最大值_经典的动态规划DP)
- poj - 1157 - LITTLE SHOP OF FLOWERS(dp)
- poj 动态规划DP - 1157 LITTLE SHOP OF FLOWERS
- 【DP】POJ-1157 LITTLE SHOP OF FLOWERS
- POJ 1157 LITTLE SHOP OF FLOWERS(DP)
- POJ 1157 LITTLE SHOP OF FLOWERS (数塔_dp)
- POJ 1157 LITTLE SHOP OF FLOWERS 水DP
- POJ 1157 LITTLE SHOP OF FLOWERS(DP)
- POJ 1157 LITTLE SHOP OF FLOWERS (DP)
- poj1157 LITTLE SHOP OF FLOWERS(dp)
- poj1157 LITTLE SHOP OF FLOWERS (dp)
- POJ 1157 LITTLE SHOP OF FLOWERS(坐标类DP)
- POJ 1157 LITTLE SHOP OF FLOWERS ( DP )
- POJ 1157 Little shop of flowers(DP,最优搭配)
- POJ 1157 LITTLE SHOP OF FLOWERS【基础DP】
- poj 1157 LITTLE SHOP OF FLOWERS(DP)
- POJ 题目1157 LITTLE SHOP OF FLOWERS(DP)
- POJ1157_LITTLE SHOP OF FLOWERS_DP
- POJ 1157 LITTLE SHOP OF FLOWERS (线性dp)