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 }
     
  • 相关阅读:
    浅析数据库安全技术
    本站快捷付款方式
    VMware Workstation 官方正式版及激活密钥
    Win10真正好用之处
    我眼中的CentOS 下 安全策略
    美团
    Tomcat connector元素常用配置(最大连接数等)
    9.22面经:
    9.7
    合并两个有序数组为一个新的有序数组
  • 原文地址:https://www.cnblogs.com/yuming226/p/8146114.html
Copyright © 2011-2022 走看看