POJ 1017 装箱问题 解题报告
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