• Vijos P1133 装箱问题 01背包


    装箱问题

    描述

    有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积 (正整数)。要求从 n 个物品中,任取若千个装入箱内,使箱子的剩余空间为最小。

    格式

    输入格式

    第一行,一个整数,表示箱子容量;
    第二行,一个整数,表示有n个物品;
    接下来n行,分别表示这n个物品的各自体积。

    输出格式

    一个整数,表示箱子剩余空间。

    样例输入

    24
    6
    8
    3
    12
    7
    9
    7

    样例输出

    0

    限制

    每个测试点1s

    来源

    noip2001普及组第四题

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

    一道很经典的01背包,价值即体积,上代码:

     1 #include<stdio.h>
     2 #include<string.h>
     3 #define maxn 23333
     4 int V,n;
     5 int dp[maxn],a[66];
     6 int read();
     7 int max(int,int);
     8 int main(){
     9     V=read();n=read();
    10     for(int i=1;i<=n;i++)a[i]=read();
    11     for(int i=1;i<=n;i++)
    12        for(int j=V;j>=a[i];j--)
    13           dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
    14     printf("%d",V-dp[V]);
    15     return 0;
    16 }
    17 int read(){
    18     int ans=0,f=1;char c=getchar();
    19     while('0'>c||c>'9'){if(c=='-')f=-1;c=getchar();}
    20     while('0'<=c&&c<='9')ans=ans*10+c-48,c=getchar();return ans*f;
    21 }
    22 int max(int x,int y){
    23     return x>y?x:y;
    24 }
    01背包
  • 相关阅读:
    【操作系统】用Oracle VM VirtualBox 虚拟机安装XP系统时老是蓝屏
    c#操作Xml(六)
    c#操作Xml(五)
    c#操作Xml(三)
    c#操作Xml(四)
    新年快乐
    c#操作Xml(八)
    从IDataReader中读取数据实体
    c#操作Xml(七)
    c#操作Xml(二)
  • 原文地址:https://www.cnblogs.com/lpl-bys/p/7391212.html
Copyright © 2020-2023  润新知