题目大意:有1X1,2X2 ... 5X5,6X6六种类型的物品,把他们装进6X6的盒子里,求使用的最少盒子数。
贪心吧,其实一看就知道思路了,算是常识吧,装物品时通常都是先装大的,再在其余空间放小的。一点一点敲代码就好了。
#include <cstdio> int main()
{
#ifdef LOCAL
freopen("in", "r", stdin);
#endif
int a[];
while (scanf("%d%d%d%d%d%d", &a[], &a[], &a[], &a[], &a[], &a[]) != EOF)
{
if (!a[] && !a[] && !a[] && !a[] && !a[] && !a[]) break;
int ans = ;
if (a[] > )
{
ans += a[];
}
if (a[] > )
{
ans += a[];
a[] -= a[] * ;
}
if (a[] > )
{
ans += a[];
a[] -= a[] * ;
if (a[] < )
{
a[] -= - * a[];
a[] = ;
}
}
if (a[] > )
{
ans += (a[]+) / ;
int t = a[] % ;
switch(t)
{
case :
a[] -= ;
a[] -= ;
break;
case :
a[] -= ;
a[] -= ;
break;
case :
a[] -= ;
a[] -= ;
break;
}
}
if (a[] > )
{
ans += (a[]+) / ;
int t = a[] % * ;
a[] -= - t;
}
if (a[] > ) ans += (a[]+) / ;
printf("%d\n", ans);
}
return ;
}
代码可以再精简,不过精简之后思路就不如这个直接了,其实是我想偷懒啦,哈哈