HUD 1248 寒冰王座 DP

这是一道赤裸裸的简单的完全背包,在HDU 2602中我说过在01背包优化的算法中提醒要注意v V--0,而不是0--V ,其实反过来就是完全背包;

这个算法使用一维数组,先看伪代码:

for i=1..N

    for v=0..V

        f[v]=max{f[v],f[v-cost]+weight}

你会发现,这个伪代码与P01的伪代码只有v的循环次序不同而已。这里还是要啰嗦一下,

#include<stdio.h>
#include<stdlib.h>
int a[3]={ 150,200,350 };
int DP( int money )
{
     int f[10024]={ 0 };
     for( int i=0;i<=2; i++ )
     {
         for( int j=0;j<=money; j++ )
              if( j>=a[i]&&f[j-a[i]]+a[i]>f[j] )
                   f[j]=f[j-a[i]]+a[i];     
     }
     return money-f[money];    
}
int main()
{
   int n,money;
   scanf( "%d",&n );
   for( int i=0; i<n; i++ )
   {
       scanf( "%d",&money );
       printf( "%d\n",DP(money) );     
   }
   return 0;    
}

  

 

转载于:https://www.cnblogs.com/bo-tao/archive/2011/08/05/2128384.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值