hdu 1248 寒冰王座

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1248

 

简单背包问题。。用f[n]装载n元钱可以购买的最大钱数,那么ans=n-f[n];

因为每个道具的数目是无限的。。所以从小到大循环。

如果道具只有一个 从大到小循环。

 

下面是AC代码:

//2011/1127/11:47
#include<iostream>
using namespace std;
int f[10009];
int main()
{
	int t,n,i,j;
	
	cin>>t;
	while(t--)
	{
		cin>>n;
		
		memset(f,0,sizeof(f));
		for(i=1;i<=3;i++)
		{
			for(j=1;j<=n;j++)
			{
				if(i==1)
				{
					if(f[j-150]+150>f[j]&&j>=150)
						f[j]=f[j-150]+150;
				}
				if(i==2)
				{
					if(f[j-200]+200>f[j]&&j>=200)
						f[j]=f[j-200]+200;
					
				}
				if(i==3)
				{
					if(f[j-350]+350>f[j]&&j>=350)
						f[j]=f[j-350]+350;
				}
				
			}
		}
		
		
		printf("%d\n",n-f[n]);
		
		
	}
	
	return 0;
}
//2011 11/27/11:55


 

你可能感兴趣的:(hdu 1248 寒冰王座)