DP <裸> POJ 1157
2012-07-18 20:47
225 查看
噢~是一道裸的DP题·
算法不难..
所以这里总结一下DP题给我的感觉~
就像教主大人说的..DP题都给人可以暴力的方法..
然后这道题的题意:
第一行:f<花的数> v <花瓶的数>
f 行 m 列 <标号为 f 的花插在 标号为 m 的花瓶里的观赏值..> 要求是花要按标号排..就是第一朵花插在第二个花瓶里~那第二朵花只能插在第二个花瓶后面的花瓶里..
求观赏值最大~~
所以动态转移方程其实就是:dp[f][v] = max(dp[f-1][v-1]+a[f][v], dp[i][j-1])..
Code:
算法不难..
所以这里总结一下DP题给我的感觉~
就像教主大人说的..DP题都给人可以暴力的方法..
然后这道题的题意:
第一行:f<花的数> v <花瓶的数>
f 行 m 列 <标号为 f 的花插在 标号为 m 的花瓶里的观赏值..> 要求是花要按标号排..就是第一朵花插在第二个花瓶里~那第二朵花只能插在第二个花瓶后面的花瓶里..
求观赏值最大~~
所以动态转移方程其实就是:dp[f][v] = max(dp[f-1][v-1]+a[f][v], dp[i][j-1])..
Code:
#include <stdio.h> #include <cstring> #include <fstream> using namespace std; #define max(a, b) a>b?a:b int main() { int i, j, k; int f, v; int a[110][110], dp[110][110]; // freopen("e:\\acm\\mess\\stdin-stdout\\in.txt", "r", stdin); // freopen("e:\\acm\\mess\\stdin-stdout\\out.txt", "w", stdout); while(scanf("%d %d", &f, &v) != EOF) { memset(dp, 0, sizeof(dp)); memset(a, 0, sizeof(a)); for(i = 1; i <= f; ++i) for(j = 1; j <= v; ++j){ scanf("%d", &a[i][j]); } ///***DP***/// for(i = 1; i <= f; ++i) for(j = i; j <= v; ++j){ dp[i][j] = dp[i-1][j-1] + a[i][j]; if(j > i) dp[i][j] = max(dp[i][j], dp[i][j-1]); } printf("%d\n", dp[f][v]); } return 0; }
相关文章推荐
- poj 2506 Tiling <dp+大数加法>
- DP<背包?> POJ 1015
- DP<01 背包> POJ 1837
- 线性dp<一>
- Android屏幕适配小技巧sw<n>dp
- <poj,sicily>Anti-prime Sequences (DFS)
- poj1037 A decorative fence<DP>
- 【POJ 3694】 Network(割边<桥>+LCA)
- poj1753,Flip Game,ArrayDeque<Node>
- 刘汝佳<算法艺术与信息学竞赛>推荐题目——Poj
- <poj 1056>IMMEDIATE DECODABILITY
- poj 2151 <概率DP>
- POJ1014:Dividing<动归,背包问题>
- 乘积最大<DP><C++>
- 【CF 713C】Sonya and Problem Wihtout a Legend(离散化+dp)<POJ 3666变形>
- poj 2931 Building a Space Station <克鲁斯卡尔>
- poj 1423 Big Number<<求N!位数>>
- POJ—2153(STL<map>)
- wata 哥 的 vector<MAX> G 第一次不能用 POJ 3321 树状数组
- <cf>Solitaire(DFS or DP)