POJ 1157 花瓶插花问题
来源:互联网 发布:阿里云os root 编辑:程序博客网 时间:2024/05/01 00:03
大意为F束花插入V个瓶子里面,花要按编号插,不同花插入不同的花瓶有不同的美观程度,要求最大的美观程度。
采用DP做法。
此题有两种解题,两种不同状态函数的表示。一种f[i][j]表示第i束花插入第[j]个瓶子里面所获得的最大的美观程度。则状态转移函数可以表示为f[i][j]=max(f[i-1][k]+a[i][j])其中i-1<=k<j;
则输出为f[F][F]-f[F][V]之间的最大值。
解法一代码:
解法一代码:
#include <iostream>#include <cstdio>#include <cmath>using namespace std;int n, m;const int maxn = 104;int fv[maxn][maxn];int dp[maxn][maxn];void solve(){ int i, k , j, q; for(i=1;i<n;i++){ for(k=i;k<m;k++){ //第i束花插入第k个瓶子里面 dp[i][k]=-10000; for(j=i-1;j<k;j++){ //取其中的最大值 q=dp[i-1][j]+fv[i][k]; if(q>dp[i][k]) dp[i][k]=q; } } }}int main(){ cin >> n >> m; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> fv[i][j]; } } for (int i = 0; i < m; ++i) { dp[0][i] = fv[0][i]; } solve(); int ans = dp[n-1][n-1]; for(int i = n - 1; i < m; i++) if(ans < dp[n-1][i]) ans = dp[n-1][i]; //为其中的最大值 printf("%d\n",ans); return 0;}
第二种解法的状态函数为f[i][j]表示第i束花插入前j个瓶子里面。则状态转移函数为f[i][j]=max(f[i-1][j-1]+a[i][j],f[i][j-1])
因为有两种插法,一:第i束花插入第j个瓶子里面,则为f[i][j]=f[i-1][j-1]+a[i][j].二:第i束花不插入第j个瓶子里面,则f[i][j]=f[i][j-1]。两者当中取极大
解法二代码:#include <iostream>#include <cstdio>#include <cmath>using namespace std;int n, m;const int maxn = 104;int fv[maxn][maxn];int dp[maxn][maxn];void solve(){ for (int i = 1; i < n; ++i) { for (int j = i + 1; j < m; ++j) { dp[i][j] += max(dp[i][j - 1], dp[i - 1][j - 1] + fv[i][j]); } }}int main(){ cin >> n >> m; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> fv[i][j]; } } dp[0][0] = fv[0][0]; for (int i = 1; i < m; ++i) { dp[0][i] = max(dp[0][i - 1], fv[0][i]); } for(int i=1; i<n; i++) dp[i][i]=dp[i-1][i-1] + fv[i][i]; solve(); cout << dp[n - 1][m - 1] << endl; //为其中的最大值 return 0;}
0 0
- POJ 1157 花瓶插花问题
- POJ 1157 LITTLE SHOP OF FLOWERS(花瓶插花问题)
- poj 1157(SGU 104) 动态规划(花瓶插花)
- 花瓶插花
- [c]sdnuoj1044 花瓶插花
- HDU4614【线段树。】【花瓶与插花】
- dp问题 插花
- 橱窗的插花问题
- 花瓶。
- 花瓶
- POJ 1157 LITTLE SHOP OF FLOWERS(前i朵花放到前j个花瓶)
- 插花问题的“动态规划法”算法
- “插花问题”的动态规划法算法
- 插花问题的“动态规划法”算法
- 插花问题的“动态规划法”算法
- 插花问题的“动态规划法”算法
- “插花问题”的动态规划法算法
- “插花问题”的动态规划法算法
- 空字符与空格字符、NULL、空字符串
- C++:函数模板、类模板及其特化
- 数据挖掘导论读书笔记
- E325: ATTENTION 文件非正常关闭错误
- button实现隐藏,可见; 直接show、hide即可
- POJ 1157 花瓶插花问题
- android学习笔记(5)
- XZ_iOS之编译参数Optimization Level
- ScrollView 嵌套 ListView
- ajaxToolkit:AutoCompleteExtender 的触发选择事件以及JSON序列化和使用键值对
- Javascript学习笔记(2017.4.13-2017.4.17)
- android.mk 语法
- bzoj1455罗马游戏
- memcache redis