程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDOJ 1248 寒冰王座 (完全背包)

HDOJ 1248 寒冰王座 (完全背包)

編輯:C++入門知識

題意:用面額為N的鈔票能買到商品,因為店鋪不找零,所以求“浪費”的最小金額。
思路:這道題是一道典型的完全背包題(也可以用別的方法解),將150,200,350作為物體體積,N做為背包容積。
[cpp] 
#include<stdio.h> 
#include<string.h> 
 
#define N 11111 
 
int type[4]={0,150,200,350},w[N]; 
 
int main() 

    int t,n,i,j; 
    while(scanf("%d",&t)==1) 
    { 
        while(t--) 
        { 
            scanf("%d",&n); 
            memset(w,0,sizeof(w)); 
            for(i=1;i<=3;i++)//表示該種物品有或沒有(01背包) 
            { 
        for(j=type[i];j<=n;j++)//注意:此處與01背包不同,原因請查閱《背包九講》(第二版) 
                { 
                    if(w[j]<w[j-type[i]]+type[i]) 
                        w[j]=w[j-type[i]]+type[i]; 
                } 
            } 
            printf("%d\n",n-w[n]); 
        } 
    } 
    return 0; 


作者:sdc1992

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved