Problem R Problem ID:1017
简单题意:物品共有六种规格:1*1, 2*2, 3*3, 4*4, 5*5, 6*6,它们将被放到6*6的包裹里送到客户手中。已知各个规格的物品数量,求最少需要多少个包裹。
解题思路形成过程:从6*6的物品开始往下遍历,优先放更大的物品:
①每个6*6的物品单独占一个包裹;
②5*5的物品还可以一起放置11个1*1的物品;
③4*4的物品可以一起放置5个2*2的物品;
④3*3的物品可以一起放置3个3*3的物品或5个2*2+7个1*1的物品;
⑤2*2的物品可以一起放置8个2*2的物品或32个1*1的物品;⑥一个包裹里如果全部放1*1的物品则可以放置36个。(上述过程中如果2*2的物品已经放完,则每个2*2的物品可以换成4个1*1的物品)
感想:注意细节。不知道哪里出错时可以尝试自己写一些例子进行测试。
代码:
#include<iostream> #include<stdio.h> using namespace std; int a[6]; void de1(int n) { if(a[0]<=n) a[0]=0; else a[0]-=n; } void de2(int n) { if(a[1]>=n) a[1]-=n; else { int m=4*(n-a[1]); a[1]=0; de1(m); } } void de3(int n) { if(a[2]>=n)