NIT 1048

                                                                                三个师妹之点菜


Time limit:  1000MS     Memory limit:  32768K 
Total Submit:  985     Accepted:  232 

sharp有三个师妹.这个三个师妹很喜欢捉弄sharp.一天sharp请她们三个去东裕吃川菜去了.她们仨点菜 ,当然她们这次不会放过sharp的,而且她们知道sharp这次身上带了1024元钱,所以她们决定点尽量多的 菜,让sharp付尽量多的钱,当然每道菜她们只点一次,而且她们点的菜钱总和不会大于1024元,因为超出 了sharp付钱的时候发现不够会叫她们三个付多出来的部分的.

第一行输入一个N,下面有N种情况(1< N < 16). 每种情况的第一个行为M,代表有多少种川菜.接下来的M行是每一种川菜的价格.价格都是整数(1<= M <= 128),并且价格不会大于1024的. sharp身上永远只带1024元钱.

输出共N行. 每行输出sharp最多要付多少钱.

Sample Input

2

2
256
44

3
512
400
400

Sample Output

300
912
 
 
简单的背包题,但也是我第一次写背包的题。要继续努力,从简单开始!
AC code:
#include<stdio.h>
#include<string.h>
int main()
{
	
int i,j,n,d,m,money[1025];
	
while(scanf("%d",&n)==1)
	
{
		
while(n--)
		
{
			
memset(money,0,sizeof(money));
			
scanf("%d",&m);
			
for(i=0;i<m;i++)
			
{
				
scanf("%d",&d);
				
for(j=1024;j>=d;j--)
					
if(money[j-d]+d>money[j])//状态转移条件,判断加入这么多钱后是否大于不加入.
						
money[j]=money[j-d]+d;
			
}
			
printf("%d\n",money[1024]);
		
}
	
}
	
return 0;
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值