poj 1157 LITTLE SHOP OF FLOWERS

来源:互联网 发布:c语言面向对象吗 编辑:程序博客网 时间:2024/05/22 14:52
题目链接:http://poj.org/problem?id=1157

题       意:将F 束花插入V 个花瓶,F<=V ,花和花瓶各自从1 开始编号。 每个花瓶只能插一束花,

                  如果i<j,花束i 必须放在花束j 左边 的花瓶中。A(i,j) 表示第i 种花束摆在第j 个花瓶中获

                  得的美学值。现在要你算出怎么放,能够使美学价值最大。

                也可以这样看:在F*V的数组中每行选一个数,该行如果选了第i个数,那么下一行

                只能在该行第i个数后面选, 求所选数的最大和。


思     路:我们设dp[i][j]表示前i束花插入到前j个花瓶的最大美学价值:

               1朵花时:对于dp[1][1]有dp[1][1] = vis[1][1] ,dp[1][2] = max(dp[1][1],vis[1][2]), dp[1][3] = max(dp[1][2],vis[1][3]);
               2束花时:对于dp[2][1]这种情况是没有意义的(因为瓶子不够所以在定义j时可以直接定义j=i+1)
                                 对于dp[2][2]有dp[2][2] = dp[1][1]+w[2][2],当dp[i][j]中i=j时,花刚好将瓶子插满,所以对于这种情况有dp[i][j]=dpi-1][j-1]+vis[i][j];
                                 对于dp[2][3] 有两种情况:当dp[i][j]中i<j这种情况,我们可以这样认为,第i插入第j个瓶子中吗?
                                            1:插入的话dp[2][3] = dp[1][2]+w[2][3]
                                           2:不插入的话 dp[2][3] = dp[2][2]

                                  两者比较一个最大值赋给dp[2][3]所以我们能够得到对于所有情况有dp[i][j] = max(dp[i-1][j-1]+w[i][j],dp[i][j-1])。

代码如下:

#include <iostream>using namespace std;#include <string.h>#include <stdio.h>#include <queue>#include <algorithm>typedef long long LL;int dp[105][105],vis[105][105];int main(){    int f, v;    while( scanf ( "%d %d", &f, &v ) != EOF )    {        for( int i = 1; i <= f; i ++ )            for( int j = 1; j <= v; j ++ )            scanf ( "%d", &vis[i][j] );        memset( dp, 0, sizeof(dp) );        for( int i = 1; i <= f; i ++ )        {            dp[i][i] = dp[i-1][i-1] + vis[i][i];//直接处理i==j的情况            for( int j = i+1; j <= v; j ++ )//j的初始化要满足i<j                dp[i][j] = max( dp[i-1][j-1] + vis[i][j], dp[i][j-1] );        }        printf("%d\n",dp[f][v]);    }    return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 想起诉不知道对方地址怎么办 遇见家里来嫌疑人员怎么办 老滚5老婆死了怎么办 美化包安装之后闪退怎么办 蕉下的伞坏了怎么办 苹果7通话音质特别差怎么办 雨伞的伞骨坏了怎么办 雨伞的铁丝掉了怎么办 手机银行验证码忘了怎么办 应用安装验证码忘了怎么办 大王卡激活码找不到了怎么办 信用卡的激活码找不到怎么办 育碧账号忘了怎么办 uplay八折券丢了怎么办 不小心按到了育碧解绑怎么办 台式电脑连不上网怎么办 重装系统也安装不了cad怎么办 染发灰色偏绿了怎么办 vgm数据填错了怎么办 克里格插值 不符合正态分布怎么办 克里金插值无效的输出范围怎么办 穿完臭袜子要洗手吗不洗怎么办 超敏c反应蛋白117怎么办 钢铁雄心4无模板怎么办 登录 新浪微博登录异常怎么办 微博授权失败怎么办qq uc微博授权失败怎么办 苹果手机无线网坏了怎么办 小米手机wife信号不好怎么办 微博出错了c403怎么办 微信客服没人接怎么办 安装包解析错误怎么办平板 苹果手机新浪免费邮箱用不了怎么办 苹果手机老是弹跳邮箱登陆怎么办 qq长时间不登录上不了怎么办 父母不会说英语怎么办英国签证 美军舰真来台湾怎么办 现役军人回家探亲和人打架怎么办 对四六不懂的人怎么办 赌球小2.5进3球怎么办 皮肤旧伤黑色斑怎么办