您的位置:首页 > 其它

POJ 1017 装箱问题 解题报告

2009-02-11 15:04 225 查看
POJ 1017 装箱问题 解题报告

编号:1017

 

考查点:简单计算题

 

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

 

提交情况:以前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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: