zoukankan      html  css  js  c++  java
  • 知码开门 装箱问题

    【探索型】6.16装箱问题

    成绩 100 开启时间 2014年04月1日 星期二 08:00
    折扣 0.8 折扣时间 2014年04月28日 星期一 23:00
    同意迟交 关闭时间 2014年04月28日 星期一 23:00

    如果有n项物品,大小分别为s1。s2,...,sn。当中si是整数且满足:1<=si<=100。要把这些物品装入到容量为100的一批箱子(序号1~n)中。装箱方法是:对每项物品si,依次扫描全部这些箱子,把si放入足以可以容下它的第一个箱子中(first-fit策略)。写一个程序来模拟这个装箱的过程。

    输入:

    有两行。第一行是整数n(n<=1000),表示物品的个数;第二行是n个整数si(si<=100)。分别表示n个物品的大小

    输出:

    每一个物品所在的箱子序号。并输出所需的箱子数目

    输入例子:

    8
    60 70 80 90 30 40 10 20

    输出例子:

    60 1
    70 2
    80 3
    90 4
    30 1
    40 5
    10 1
    20 2
    所需的箱子数目为5

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n,a[1005],b[1005],l,m;
    void qq(int k)
    {
        if(k<n)
        {
            if(b[m]>=a[k])
                {
                    b[m]=b[m]-a[k];
                    cout<<a[k]<<" "<<m<<endl;
                    if(l<m)
                        l=m;
                    //cout<<l<<endl;
                    m=1;
                    qq(k+1);
    
                }
            else
                {m++;qq(k);}
        }
    }
    int main()
    {
        int i;
        while(cin>>n)
        {
            for(i=0;i<=1005;i++)
                b[i]=100;
            l=0;
            m=1;
            for(i=0;i<n;i++)
                cin>>a[i];
    
            qq(0);
        printf("所需的箱子数目为%d
    ",l);
        }
        return 0;
    }
    
    


  • 相关阅读:
    win32
    win32
    win32
    win32
    C++ 指针的错误释放
    交换两个数不引入第三个变量
    交换两个数不引入第三个变量
    hdu3986 spfa + 枚举最短路上的边
    hdu3986 spfa + 枚举最短路上的边
    hdu2433 spfa+mark[x][u][v]优化
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6918012.html
Copyright © 2011-2022 走看看