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

HDOJ 1248 寒冰王座 (多重背包)

編輯:C++入門知識

標准的多重背包,直接附代碼:

 

 

[cpp]
/*HDOJ1248
作者:陳佳潤
2013-04-18
*/  
#include<iostream>  
#include<string.h>  
using namespace std; 
#define max(a,b) (a>b?a:b)  
int dp[10005]; 
int momey; 
 
void Multiply_Pack(int value,int weight){ 
    int i; 
    for(i=weight;i<=momey;i++){ 
        dp[i]=max(dp[i],dp[i-weight]+value);  
    }  

 
int main(){ 
    int Time; 
    cin>>Time; 
    while(Time--){ 
        cin>>momey;    
        memset(dp,0,sizeof(dp)); 
        Multiply_Pack(150,150); 
        Multiply_Pack(200,200); 
        Multiply_Pack(350,350); 
        cout<<momey-dp[momey]<<endl; 
    } 
    return 0; 

/*HDOJ1248
作者:陳佳潤
2013-04-18
*/
#include<iostream>
#include<string.h>
using namespace std;
#define max(a,b) (a>b?a:b)
int dp[10005];
int momey;

void Multiply_Pack(int value,int weight){
 int i;
 for(i=weight;i<=momey;i++){
  dp[i]=max(dp[i],dp[i-weight]+value);
 }
}

int main(){
 int Time;
 cin>>Time;
 while(Time--){
  cin>>momey; 
  memset(dp,0,sizeof(dp));
  Multiply_Pack(150,150);
  Multiply_Pack(200,200);
  Multiply_Pack(350,350);
  cout<<momey-dp[momey]<<endl;
 }
 return 0;
}

 

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