zoukankan      html  css  js  c++  java
  • c++ 装箱问题

    装箱问题

    Description

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

    Input

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

    Output

    输出只有一行数据,该行只有一个数,表示最小的箱子剩余空间。

    Sample Input

    24
    6
    8
    3
    12
    7
    9
    7
    

    Sample Output

    0
    

    HINT

    Source

    #include <bits/stdc++.h>
    using namespace std;
    bool f[20001];
    int n, a[31], v;
    int main() {
        cin >> v >> n;
        for (int i = 1; i <= n; i ++) {
            scanf("%d", &a[i]);
        }
        memset (f, 0, sizeof(f));
        f[0] = 1;
        for (int i = 1; i <= n; i ++) {
            for (int j = v; j >= 0; j --) {
                if (f[j] == 1 && j + a[i] <= v) {
                    f[j + a[i]] = 1;
                }
            }
        }
        int ans = 0;
        for (int i = v; i >= 0; i --) {
            if (f[i] == 1) {
                ans = i;
                break;
            }
        }
        cout << v - ans << endl;
        return 0;
    }
    /**************************************************************
        Problem: 1603
        User: LJA001162
        Language: C++
        Result: 正确
        Time:0 ms
        Memory:1556 kb
    ****************************************************************/
    
  • 相关阅读:
    运用Python计算Π的多少(大致计算)
    运用python绘制小猪佩奇
    博客园使用指南 wiki
    博客园 — 打赏功能
    新SSM框架整合
    springMVC
    Eclipse转IDEA的配置!!
    Java学习小知识总结
    java-StringBuffer
    博客园自定义主题
  • 原文地址:https://www.cnblogs.com/LJA001162/p/11868077.html
Copyright © 2011-2022 走看看