洛谷P1854 橱窗布置
2017-01-21 19:18
197 查看
1.此题的数据中有负数,所以dp数组的初始化为-inf!
2.用book数组存储路径,用递归来回溯路径。(book[x][y]表示第x轮、选到第y个花瓶时最大方案的前一个点)
f[x][y]:前x束花、前y个花瓶的最大美学值
初始化:f[0][0~v] = 0
状态转移方程:f[i][j] = f[i-1][k] + a[i][j] (i-1 <= k < j)
#include<iostream>
#include<cstdio>
#define inf 9999999
using namespace std;
int f,v,a[101][101],dp[101][101],book[101][101];
//dp[x][y]:前x束花、前y个花瓶的最大美学值
//book[x][y]:第x轮、选到第y个花瓶时最大方案的前一个点
void print(int x,int y) {
if (x == 1) return; //因为记录的是前一个点,所以递归只到第二轮就可以输出第一个点
print(x-1,book[x][y]);
printf("%d ",book[x][y]);
}
int main()
{
scanf("%d%d",&f,&v);
for (int i=1; i<=f; i++)
for (int j=1; j<=v; j++) scanf("%d",&a[i][j]);
for (int i=1; i<=f; i++)
for (int j=1; j<=v; j++) {
dp[i][j] = -inf; //有负数时一定要初始化为-inf
for (int k=i-1; k<j; k++) if (dp[i-1][k]+a[i][j]>dp[i][j]) {
dp[i][j] = dp[i-1][k]+a[i][j];
book[i][j] = k;
}
}
int ans = 0,p;
for (int i=f; i<=v; i++) //这里要比较,因为花瓶不一定恰好选完
if (dp[f][i] > ans) {
ans = dp[f][i];
p = i;
}
printf("%d\n",ans);
print(f,p);
printf("%d",p); //输出最后一个点
return 0;
}
2.用book数组存储路径,用递归来回溯路径。(book[x][y]表示第x轮、选到第y个花瓶时最大方案的前一个点)
f[x][y]:前x束花、前y个花瓶的最大美学值
初始化:f[0][0~v] = 0
状态转移方程:f[i][j] = f[i-1][k] + a[i][j] (i-1 <= k < j)
#include<iostream>
#include<cstdio>
#define inf 9999999
using namespace std;
int f,v,a[101][101],dp[101][101],book[101][101];
//dp[x][y]:前x束花、前y个花瓶的最大美学值
//book[x][y]:第x轮、选到第y个花瓶时最大方案的前一个点
void print(int x,int y) {
if (x == 1) return; //因为记录的是前一个点,所以递归只到第二轮就可以输出第一个点
print(x-1,book[x][y]);
printf("%d ",book[x][y]);
}
int main()
{
scanf("%d%d",&f,&v);
for (int i=1; i<=f; i++)
for (int j=1; j<=v; j++) scanf("%d",&a[i][j]);
for (int i=1; i<=f; i++)
for (int j=1; j<=v; j++) {
dp[i][j] = -inf; //有负数时一定要初始化为-inf
for (int k=i-1; k<j; k++) if (dp[i-1][k]+a[i][j]>dp[i][j]) {
dp[i][j] = dp[i-1][k]+a[i][j];
book[i][j] = k;
}
}
int ans = 0,p;
for (int i=f; i<=v; i++) //这里要比较,因为花瓶不一定恰好选完
if (dp[f][i] > ans) {
ans = dp[f][i];
p = i;
}
printf("%d\n",ans);
print(f,p);
printf("%d",p); //输出最后一个点
return 0;
}
相关文章推荐
- SSL-ZYC 1626(洛谷P1854) 花店橱窗布置
- 洛谷P1854 花店橱窗布置 分析+题解代码
- DP之花店橱窗布置
- [Tyvj 1124]花店橱窗布置
- 橱窗布置c++动态规划
- 1028 花店橱窗布置
- codevs 1028 花店橱窗布置
- 洛谷 P1854 花店橱窗布置
- 花店橱窗布置【DP】
- 洛谷 P1854 花店橱窗布置 【dp】
- 【CodeVS 1028】 花店橱窗布置
- ssl1626-花店橱窗布置【日常dp】
- 花店橱窗布置问题
- wikioi 1028 花店橱窗布置 最大权匹配
- 橱窗布置
- 花店橱窗布置(IOI)
- 二解<花店橱窗布置>
- 花店橱窗布置
- IoI99_花店橱窗布置问题(普通DP)
- [IOI1999]花店橱窗布置(DP路径记录)