zoukankan      html  css  js  c++  java
  • 关于完全背包问题

    还是使用动态规划(Dynamic Planning)

    问题描述:

    -------------------------------------------------------------------------------------------------------------------------

    背包问题

    设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为K,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于K,而价值的和为最大。
    输入数据:
    第一行两个数:物品总数N,背包载重量K;两个数用空格分隔;
    第二行N个数,为N种物品重量;两个数用空格分隔;
    第三行N个数,为N种物品价值; 两个数用空格分隔.
    输出数据:
    第一行总价值.
    输入样例:
    4 10
    2 3 4 7
    1 3 5 9
    输出样例:
    12

    -------------------------------------------------------------------------------------------------------------------------

    法一:

     1 #include "iostream"
     2 #include "cstdio"
     3 #define MAXN 8102050
     4 using namespace std;
     5 int n,w[MAXN],v[MAXN];
     6 int k;
     7 int f[MAXN];
     8 int main()
     9 
    10 {   
    11     cin>>n>>k;
    12     for (int i=1;i<=k;i++)
    13         f[i]=-2100000;
    14     for (int i=1;i<=n;i++)
    15         cin>>w[i];
    16     for (int i=1;i<=n;i++)
    17         cin>>v[i];
    18     f[0]=0;
    19     for (int i=1;i<=n;i++)
    20     for (int wei=w[i];wei<=k;wei++)
    21         f[wei]=(f[wei-w[i]]+v[i]>f[wei])?f[wei-w[i]]+v[i]:f[wei];
    22     cout<<f[k];
    23     return 0;
    24 }

    法二:

    待续....

  • 相关阅读:
    python3使用PyMysql连接mysql数据库
    MySQL知识总结
    python--正则表达式
    python之多线程
    python在windows和linux环境的进程对比及进程和进程之间的通信
    python基础之生成器(generator)
    python基础之动态添加属性和方法
    [STM32F1] 【转】STM32驱动MPU6050
    51单片机怎么使用MPU6050读取角度值程序 ??
    stm32f10x_lib.h
  • 原文地址:https://www.cnblogs.com/RoitAGI/p/5666385.html
Copyright © 2011-2022 走看看