zoukankan      html  css  js  c++  java
  • POJ 1017

    http://poj.org/problem?id=1017

    题意就是有6种规格的物品,给你一些不同规格的物品,要求你装在盒子里,盒子是固定尺寸的也就是6*6,而物品有1*1,2*2,3*3,4*4,5*5,6*6,给定你一些物品的数量,求最少的盒子的用量。

     思路:对于大的盒子先放,而小的盒子,如果可以填充的话,就填充,也是又大到小填充。分析多种情况即可

     1 #include <stdio.h>
     2 #include <iostream>
     3 
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     int one,two,thr,fou,fiv,six,ans;
     9     while(1)
    10     {
    11         ans=0;
    12         scanf("%d%d%d%d%d%d",&one,&two,&thr,&fou,&fiv,&six);
    13         if(one==0&&two==0&&thr==0&fou==0&&fiv==0&&six==0) break;
    14         ans+=six;
    15         ans+=fiv;
    16         if(fiv!=0)
    17         {
    18             if(one<fiv*11) one=0;
    19             else one-=fiv*11;
    20         }
    21         ans+=fou;
    22         if(fou!=0)
    23         {
    24             if(two>=fou*5) two-=fou*5;
    25             else
    26             {
    27                 one-=(fou*5-two)*4;
    28                 two=0;
    29             }
    30         }
    31         if(thr%4==0) ans+=thr/4;
    32         else
    33         {
    34             ans+=thr/4+1;
    35             if(thr%4==1)
    36                 if(two>=5)
    37                 {
    38                     two-=5;one-=7;
    39                 }
    40             else
    41             {
    42                 one-=(27-two*4);
    43                 two=0;
    44             }
    45             if(thr%4==2)
    46                 if(two>=3)
    47                 {
    48                     two-=3;one-=6;
    49                 }
    50             else
    51             {
    52                 one-=(18-two*4);
    53                 two=0;
    54             }
    55             if(thr%4==3)
    56                 if(two>=1)
    57                 {
    58                     two-=1;
    59                     one-=5;
    60                 }
    61             else
    62             {
    63                 one-=(9-two*4);
    64                 two=0;
    65             }
    66         }
    67         if(two>0) {
    68             if(two%9==0) ans+=two/9;
    69             else {
    70                 ans+=two/9+1;
    71                 one-=(two/9+1)*36-two*4;
    72             }
    73         }
    74         if(one>0){
    75             if(one%36==0) ans+=one/36;
    76             else {
    77                 ans+=one/36+1;
    78             }
    79         }
    80         printf("%d
    ",ans);
    81     }
    82     return 0;
    83 }
  • 相关阅读:
    三元组数据结构
    线性表的顺序表示和实现 数据结构
    【欧拉计划1】Multiples of 3 and 5
    strcmp()与strcmpi()函数 C语言
    指向函数的指针 C语言
    const限定符声明 C语言
    Java环境搭建与配置
    栈的C语言实现
    【欧拉计划2】Even Fibonacci numbers
    单链表的表示和实现 数据结构
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/5360801.html
Copyright © 2011-2022 走看看