zoukankan      html  css  js  c++  java
  • 叠放箱子问题

    题意

      某港口有一批集装箱,将其编号,分别为1至N。每一个箱子的外型尺寸都是一样的,现在要将其中某些集装箱叠放起来,集装箱叠放的规则如下:
    (1)每个集装箱上最多只能直接叠放一个集装箱。 

    (2)编号较小的集装箱不能放在编号较大的集装箱之上。 

    (3)每个集装箱都给出了自身的重量和可承受的重量,每个集装箱之上的所有集装箱重量之和不得超过该集装箱的可承受的重量。
       现在要求你编程,从中选出最多个集装箱,使之在满足以上条件的情况下叠放起来,即要求叠得尽可能地高。 


    分析

    w[i]表示第i个箱子的重量。

    p[i]表示第i个箱子的承受重量。

    f(i,j)表示前i个箱子中最多可选出f(i,j)个叠放,还可承受重量j。 

    f(i,j)=Max{ f[i-1,j-w[i]]+1 ,f[i-1,j] }。




    var
    n,i,j,tj:longint;
    w,p:array[0..1001]of longint;
    f:array[0..1001,0..6000]of longint;


    function max(x,y:longint):longint;
    begin
        if x>y then exit(x) else exit(y);
    end;


    begin
        readln(n);
        for i:=1 to n do
        readln(w[i],p[i]);
        fillchar(f,sizeof(f),0);
        f[n,w[n]]:=1;
        for i:=n-1 downto 1 do
        begin
            f[i]:=f[i+1];
            for j:=0 to p[i] do
            f[i,j+w[i]]:=max(f[i+1,j]+1,f[i,j+w[i]]);
        end;
        tj:=0;
        for i:=0 to 6000 do
        if f[1,i]>tj then tj:=f[1,i];
        write(tj);
    end.


  • 相关阅读:
    mysql函数
    maven 配置自动本地/线上不同配置自动打包
    maven clean后 编译报错
    htmlunit填坑
    java正则表达式移除网页中注释代码
    spark 计算结果写入mysql 案例及常见问题解决
    pychrome激活
    hadoop集群常见问题解决
    hadoop+spark集群搭建
    C++:构造函数2——拷贝构造函数
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500158.html
Copyright © 2011-2022 走看看