POJ 1017 装箱问题 解题报告

POJ 1017 装箱问题 解题报告

编号:1017

 

考查点:简单计算题

 

思路:有两种思路,一是逐步判断,从63,有空位置就拿21来填,这种方法有点繁琐,是我的思路。书上给的代码是统一判断,相当经典,代码极其短小精悍.

 

提交情况:以前AC过此题,现在重做一遍竟然WA了一次,6*6-5*5我写成9了,汗.

 

Source Code

 


//POJ Grids 1017
#include <iostream>
using namespace std;

int main()
{
    
int a1,a2,a3,a4,a5,a6;
    
while (cin>>a1>>a2>>a3>>a4>>a5>>a6&&(a1+a2+a3+a4+a5+a6))
    {
        
int bz = 0;
        bz 
+= a6;
        bz 
+= a5;
        a1 
= max(0,a1-a5*11);
        bz 
+= a4;
        
if (a2-a4*5>=0)
            a2 
-= a4*5;
        
else
        {
            a1 
= max(0,a1-(a4*5-a2)*4);
            a2 
= 0;
        }
        bz 
+= (a3+3)/4;
        a3 
%= 4;
        
if (a3)
        {
            
if (a2-7+2*a3>=0)
            {
                a1 
= max(0,a1-8+a3);
                a2 
-= 7-2*a3;

            }
            
else
            {
                a1 
= max(0,a1-(36-9*a3-4*a2));
                a2 
= 0;
            }
        }
        bz 
+= (a2+8)/9;
        a2 
%= 9;
        
if (a2)
            a1 
= max(0,a1-(36-4*a2));
        bz 
+= (a1+35)/36;

        cout
<<bz<<endl;
    }

    
return 0;
}

总结:如果发现有太多地方需要进行边界判断,估计是思路出了点问题,这里我贴的是我AC的代码,非最经典的代码.

 

 

 

                                                       By   Ns517

                                                      Time 09.02.11

posted @ 2009-02-11 15:04  端木  阅读(1388)  评论(0编辑  收藏  举报