十:贪心算法-背包问题

问题:贪心算法-背包问题
题目描述

有一背包空间为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 }
 
原文地址:https://www.cnblogs.com/yuming226/p/8146114.html