• SSL 1376——完全背包


    Description

    设有n 种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n 种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。

    Input

    第一行:两个整数,M(背包容量,M<= 200)和N(物品数量,N<= 30); 第2..N+1 行:每行二个整数Wi,Ui,表示每个物品的重量和价值。

    Output

    仅一行,一个数,表示最大总价值。

    Sample Input

    12 4
    2 1
    3 3
    4 5
    7 9
    Sample Output

    15


    公式为
    if (w[i]<=j)and(f[j]<=f[j-w[i]]+u[i]) then f[j]:=f[j-w[i]]+u[i];
    1<=i<=n
    0<=j<=m


    代码如下:

    var  n,m,i,j:longint;
         w,u:array[1..30]of longint;
         f:array[0..200]of longint;
    begin
      readln(m,n);
      for i:=1 to n do readln(w[i],u[i]);
      f[0]:=0; 
      for i:=1 to n do
        for j:=0 to m do
          if (w[i]<=j)and(f[j]<=f[j-w[i]]+u[i]) then
            f[j]:=f[j-w[i]]+u[i];
      write(f[m]);
    end.
  • 相关阅读:
    RocketMQ Message hasn't been sent. Caused by No route info of this topic, test-topic
    Barrier
    WPF之资源
    WPF之命令
    WPF之事件
    WPF之属性
    多路Binding
    Binding的数据转换
    Binding的数据校验
    为Binding指定源的方法
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412393.html
Copyright © 2020-2023  润新知