zoukankan      html  css  js  c++  java
  • 十:贪心算法-背包问题

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

    有一背包空间为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 }
     
  • 相关阅读:
    CodeForces 460B
    CodeForces 456A
    CodeForces462B
    HDU1394(线段树||树状数组)
    HDU1541(树状数组)
    HDU1556(树状数组)
    HDU5726(RMQ&&二分)
    POJ1182(并查集)
    HDU4496(并查集)
    HDU3038(并查集)
  • 原文地址:https://www.cnblogs.com/yuming226/p/8146114.html
Copyright © 2011-2022 走看看