• 贪心算法——北大1017


    1017:装箱问题

    时间限制:
    1000ms
    内存限制:
    65536kB
    描述
    一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。这些产品通常使用一个 6*6*h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你来设计。
    输入
    输入文件包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空格隔开,分别为1*1至6*6这六种产品的数量。输入文件将以6个0组成的一行结尾。
    输出
    除了输入的最后一行6个0以外,输入文件里每一行对应着输出文件的一行,每一行输出一个整数代表对应的订单所需的最小包裹数。
    样例输入
    0 0 4 0 0 1 
    7 5 1 0 0 0 
    0 0 0 0 0 0 
    样例输出
    2 
    1
    分析:用贪心算法先填大的,再填小的! 
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<stdlib.h>
    int main()
    {
        int a[7],b[3],cont,p;
        while(scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]),a[1]||a[2]||a[3]||a[4]||a[5]||a[6])
        {
            cont =0;
            cont+=a[6]+a[5]+a[4]+ceil(a[3]/4.0);//6,5,4的都必须独占一个,3是4个独占
            memset(b,0,sizeof(b));
            b[1]+=11*a[5];//5里只能再放1了
            b[2]+=5*a[4];//4里全放2
            if(a[3]%4==1)
            {
                b[2]+=5;//只有一个3时,可以放5个2,7个1
                b[1]+=7;
            }
            else if(a[3]%4==2)//有两个3时,可以放3个2,6个1
            {
                b[2]+=3;
                b[1]+=6;
            }
            else if(a[3]%4==3)//有三个3时,可以放1个2,5个1
            {
                b[2]+=1;
                b[1]+=5;
            }
            if(b[2]>=a[2])//2够用时
            {
                b[1]+=(b[2]-a[2])*4;//还剩几个1
                if(b[1]<a[1])  cont+=ceil((a[1]-b[1])/36.0);
            }
            else//不够用
            {
                cont+=ceil((a[2]-b[2])/9.0);
                if((a[2]-b[2])%9==0) //增加的正好被2填满
                    p=0;
                else //没填满
                    p=9-(a[2]-b[2])%9;
                b[1]+=p*4;//还剩几个1
                if(b[1]<a[1])  cont+=ceil((a[1]-b[1])/36.0);
            }
            printf("%d\n",cont);
        }
        return 0;
    }
    
    
    
            
  • 相关阅读:
    js变量
    运行javascript的方式
    .Net 内存泄露
    .NET Reflector反编译的方法
    SVN 忽略获取和提交obj、bin文件夹
    SQL Server编程(06)触发器
    SQL Server编程(05)游标
    SQL Server编程(04)基本语法
    SQL Server编程(03)自定义存储过程
    SQL Server编程(02)自定义函数
  • 原文地址:https://www.cnblogs.com/xiaofanke/p/2652297.html
Copyright © 2020-2023  润新知