1. 程式人生 > >十:貪心算法-背包問題

十:貪心算法-背包問題

pos cpp color %d void 算法 log body 結果

問題:貪心算法-背包問題
題目描述

有一背包空間為m,現有n個物體,他們的重量為w[i],價值為v[i]。應該如何選擇裝入背包的物品,使其裝入背包的物品總價值最大?(因為采用貪心算法,最終的結果不一定最優,但應該是接近於最優。提示:本題所選的方法為每次選取單位價值最高的物品)
輸入
第一行分別為背包的空間m和物品數量n
接下來有n行每行分別為物體的w[i]和價值v[i]
輸出
一個整數
樣例輸入
30 3
28 30
12 20
14 20
樣例輸出

40

 1 #include<stdio.h>
 2 int k=0;
 3 void fun(int n,int m,int b[][2],int sum_1,int
sum_2,int p){ 4 if(sum_1<=n&&sum_2>k){ 5 k=sum_2; 6 } 7 if(sum_1>n)return; 8 int i; 9 for(i=p;i<m;i++){ 10 fun(n,m,b,sum_1+b[i][0],sum_2+b[i][1],i+1); 11 } 12 } 13 int main(){ 14 freopen("in.txt","r",stdin); 15 freopen("
out.txt","w",stdout); 16 int n,m,sum_1=0,sum_2=0,p=0,l; 17 int b[100][2]; 18 int i=0; 19 scanf("%d%d",&n,&m); 20 l=m; 21 while(l--){ 22 scanf("%d%d",&b[i][0],&b[i][1]); 23 i++; 24 } 25 fun(n,m,b,sum_1,sum_2,p); 26 printf("%d",k); 27 return
0; 28 }

十:貪心算法-背包問題