1017-R
2016-03-31 23:34
281 查看
1.题目编号:1017-R
2.简单题意:有1*1、2*2、3*3、4*4、5*5、6*6大小的盒子,用6*6大小的盒子去装给出的箱子,求出用的最少的盒子数,输入6组数据,分别代表有1*1、2*2、3*3、4*4、5*5、6*6大小的盒子的个数。
3.解题思路形成过程:一个箱子里只能放下一个4*4或5*5或6*6大小的箱子,它们有多少个,就至少需要多少个箱子,再将其他的往里塞,先从最大的开始,一步一步来,有一个6*6盒子,总数加一,有一个5*5也是,但一个包装箱能放1个5*5的盒子和11个1*1的盒子,然后是4*4,只能放1个4*4盒子和5个2*2盒子,2*2盒子不够的空间用1*1的盒子补,4个3*3的盒子组成一个6*6的箱子,所以用了向上取整的方法,如果%4为0,那就需要一个箱子,不为4也需要一个箱子,填充别的,而且尽可能多的放置2*2盒子
放完后放1*1盒子。
4.感想:这道题看起来思路有,但做起来条件太多,有好几次都是漏下条件使代码不正确,思考问题一定要全面,多方面考虑,有些会有简易算法,要考虑细节问题,细节决定成败。
5.AC代码:
2.简单题意:有1*1、2*2、3*3、4*4、5*5、6*6大小的盒子,用6*6大小的盒子去装给出的箱子,求出用的最少的盒子数,输入6组数据,分别代表有1*1、2*2、3*3、4*4、5*5、6*6大小的盒子的个数。
3.解题思路形成过程:一个箱子里只能放下一个4*4或5*5或6*6大小的箱子,它们有多少个,就至少需要多少个箱子,再将其他的往里塞,先从最大的开始,一步一步来,有一个6*6盒子,总数加一,有一个5*5也是,但一个包装箱能放1个5*5的盒子和11个1*1的盒子,然后是4*4,只能放1个4*4盒子和5个2*2盒子,2*2盒子不够的空间用1*1的盒子补,4个3*3的盒子组成一个6*6的箱子,所以用了向上取整的方法,如果%4为0,那就需要一个箱子,不为4也需要一个箱子,填充别的,而且尽可能多的放置2*2盒子
放完后放1*1盒子。
4.感想:这道题看起来思路有,但做起来条件太多,有好几次都是漏下条件使代码不正确,思考问题一定要全面,多方面考虑,有些会有简易算法,要考虑细节问题,细节决定成败。
#include<cmath> #include<iostream> using namespace std; int main() { int a,b,c,d,e,f; while(cin>>a>>b>>c>>d>>e>>f&&(a+b+c+d+e+f)) { int sum=0; sum=f+e+d; if(a!=0) a=max(0,a-11*e); if(b>=d*5) b=b-d*5; else { a=max(0,a-4*(d*5-b)); b=0; } sum+=(c+3)/4;//向上取整 c%=4; if(c) { if(b>=7-2*c) { b-=7-2*c; a=max(0,a-(8-c)); } else { a=max(0,a-(36-4*b-9*c)); b=0; } } sum+=(b+8)/9; b%=9; if(b) { a=max(0,a-(36-b*4)); b=0; } sum+=(a+35)/36; cout<<sum<<endl; } return 0; }
5.AC代码:
相关文章推荐
- 贪心算法的C语言实现与运用详解
- 贪心算法 WOODEN STICKS 实例代码
- 浅析java贪心算法
- c语言来实现贪心算法之装箱问题
- 简单的四则运算
- 数的奇偶性
- 贪心算法
- ACM网址
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存
- 矩阵的乘法操作
- 贪心算法——找纸币问题
- 蚂蚁爬行问题
- 蚂蚁爬行问题
- 求两个数的最大公约数【ACM基础题】
- 打印出二进制中所有1的位置
- 杭电题目---一只小蜜蜂
- HDOJ 1002 A + B Problem II (Big Numbers Addition)
- 初学ACM - 半数集(Half Set)问题 NOJ 1010 / FOJ 1207