读书人

福州大学四月月赛 01背包 小弟我这样背

发布时间: 2013-04-09 16:45:09 作者: rapoo

福州大学四月月赛 01背包 我这样背不知道那里写错了,请大牛指点

Problem D 买糖果Accept: 35    Submit: 127Time Limit: 1000 mSec    Memory Limit : 32768 KBProblem Description清明君、五一君和六一君三个人是好朋友。他们很喜欢去一家糖果店买糖果,糖果店有巧克力和草莓两种口味的糖果出售。清明君喜欢吃巧克力味的糖果,六一君喜欢吃草莓味的糖果,五一君是个吃货,两种口味的糖果他都很喜欢吃。店老板把两种口味的糖果混在一起装在罐子里,于是每个罐子里每种糖果的数量都可能不相同。这一天,清明君、五一君和六一君三个人去买糖果。他们的钱只能购买m罐糖果。清明君想要a颗巧克力味的糖果,六一君想要b颗草莓味的糖果,五一君则想要糖果的数量越多越好。五一君想知道在满足清明君和六一君的要求下,自己最多能吃到多少颗糖果。Input输入包含多组数据。每组数据,第一行为两个整数n,m(1<=m<=n<=100),分别表示糖果店里糖果的总罐数和他们能够买到糖果的罐数。接下来有n行,每行两个整数x,y(0<=x,y<=10),表示第i罐糖果里有x颗巧克力味糖果和y颗草莓味糖果。最后一行为两个整数a,b。表示清明君想要a颗巧克力味的糖果,六一君想要b颗草莓味的糖果。Output每组测试数据输出一个整数占一行,为五一君最多能吃到糖果的个数。如果没有能满足清明君和六一君要求的方案,则输出-1。Sample Input3 2 1 10 3 2 3 4 5 3Sample Output4dp[i][j]  表示前i件物品,当x种颗糖j时,y糖的数目


1楼weiwei2012start46分钟前
发现问题了 出现的问题: n 1,初始化 n memset(dp,-1,sizeof(dp));n dp[0][0]=0;n 2,状态转移n if(dp[k-1][j-a[i].x]!=-1) n dp[k][j]=max(dp[k][j],dp[k-1][j-a[i].x]+a[i].y);

读书人网 >编程

热点推荐