十:貪心算法-背包問題


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

有一背包空間為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 }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM