问题:贪心算法-背包问题
题目描述
有一背包空间为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 }