码迷,mamicode.com
首页 > 其他好文 > 详细

橱窗布置

时间:2018-07-29 23:30:03      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:题目   bsp   mes   i++   代码   ret   pop   bit   style   

【题目链接】

    http://ybt.ssoier.cn:8088/problem_show.php?pid=1279

【算法】

    状态转移方程和复制书稿几乎一样,注意dp时候状态的范围保证每束花都有花瓶插。我是用rec记录的,当然也可以逆着推出位置。

【代码】

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int f,v,i,j,k,first=1;
 4 int a[110][110],dp[110][110],rec[110][110];
 5 int main()
 6 {
 7     scanf("%d%d",&f,&v);
 8     for(i=1;i<=f;i++)
 9         for(j=1;j<=v;j++)
10             scanf("%d",&a[i][j]);
11     rec[1][1]=1,dp[1][1]=a[1][1];
12     for(i=2;i<=v-(f-1);i++) if(dp[1][i-1]<a[1][i]) rec[1][i]=i,dp[1][i]=a[1][i]; else rec[1][i]=rec[1][i-1],dp[1][i]=dp[1][i-1];
13     for(i=2;i<=f;i++)
14         for(j=i;j<=v-f+i;j++)
15             for(k=i-1;k<=j-1;k++) {
16                 int cur=dp[i-1][k]+a[i][k+1];
17                 if(cur>dp[i][j]) rec[i][j]=k+1,dp[i][j]=cur;
18             }
19     printf("%d\n",dp[f][v]);
20     stack<int> s;
21     for(i=f,j=v;i;i--) {
22         s.push(rec[i][j]);
23         j=rec[i][j]-1;
24     }
25     while(!s.empty()) {
26         if(first) printf("%d",s.top()),first=0;
27         else printf(" %d",s.top());
28         s.pop();
29     }
30     return 0;
31 }

 

橱窗布置

标签:题目   bsp   mes   i++   代码   ret   pop   bit   style   

原文地址:https://www.cnblogs.com/Willendless/p/9388034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!