码迷,mamicode.com
首页 > 编程语言 > 详细

十:贪心算法-背包问题

时间:2017-12-29 21:00:07      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:body   单位   strong   std   背包问题   stdin   while   问题   应该   

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

有一背包空间为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 }

 

 

十:贪心算法-背包问题

标签:body   单位   strong   std   背包问题   stdin   while   问题   应该   

原文地址:https://www.cnblogs.com/yuming226/p/8146114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!