解题思路:贪心算法。

(1) 6*6的产品每个会占用一个完整的箱子,并且没有剩余空间

(2) 5*5的产品每个占用一个新的箱子,并且留下 11 个可以盛放 1*1 的产品的剩余空间

(3) 4*4的产品每个占用一个新的箱子,并且留下 5  个可以盛放 2*2 的产品的剩余空间

(4) 3*3的产品情况比较复杂,首先3*3 的产品不能放在原来装有 5*5 或者 4*4 的箱子中,那么必须为3*3 的产品另开若干个新的箱子,新开的箱子数目等于 3*3 的产品的数目除以4向上取整(可以使用ceil函数),同时需要讨论为 3*3 的产品新开箱子时,剩余的空间可以盛放多少 2*2 和 1*1 的产品:

① 3*3 的产品的数目恰好是4的倍数,此时还剩0个2*2的空位;

② 3*3 的产品数目是 4 的倍数加1, 此时还剩5个2*2的空位和7个1*1的空位;

③ 3*3 的产品数目是 4 的倍数加2, 此时还剩3个2*2的空位和6个1*1的空位;

④ 3*3 的产品数目是 4 的倍数加3, 此时还剩1个2*2的空位和5个1*1的空位;

(5)处理完3*3的产品,就可以比较一下剩余的2*2的空位和2*2产品的数目,如果产品数目多,就将 2*2 的空位全部填满,再为2*2 的产品打开新箱子;

(6)比较一下剩余空间与 1*1 的产品数目,如果空位多,将1*1的产品全部填入空位即可;否则,先将1*1的空位填满,然后再为 1*1 的产品打开新的箱子。

注意事项:使用ceil函数可以实现向上取整。double ceil(double x); 功 能: 返回大于或者等于指定表达式的最小整数。注意返回的是一个浮点数哦。

参考代码:#include

#include

int main()

{

int box[7]={0};

int i,sum,totalbox,space2_num,space1_num; //totalbox: 需要的箱子数目,space2_num:2*2 的空位数目

// space1_num: 1*1 的空位数目。

int space2[4]={0,5,3,1}; //数组space2表示 3*3 的产品数目分别是 4的倍数,4 的倍数+1, 4 的倍数+2,

//4的倍数+3时为3*3的产品打开的新箱子中剩余的 2*2的空位的个数

while(1)

{

sum=0;

for(i=1;i<=6;i++)

{

scanf("%d",&box[i]);  //输入 1*1 至 6*6 这六种产品的数量分别保存在box[1]到 box[6]中

sum=sum+box[i];

}

if(sum==0) break;

totalbox=box[6]+box[5]+box[4]+ceil( box[3] / 4.0 );  //较大的产品只能自己开箱

space2_num=box[4]*5+space2[ box[3]%4 ];  //每一个4*4的箱子装过后还可以再装5个2*2的箱子

//还有3*3的箱子如果没填满6*6的箱子的话,也可以用来装2*2的箱子

if(box[2]>space2_num)

totalbox+=ceil( (box[2]-space2_num) / 9.0 );

space1_num=totalbox*36-(box[6]*36+box[5]*25+box[4]*16+box[3]*9+box[2]*4);

//space1_num存放多出来的面积即1*1的空位数目

if(box[1]>space1_num)  //空间不够则新开箱

totalbox+=ceil( (box[1]-space1_num) / 36.0 );  //向上取整

printf("%d\n",totalbox);

}

return 0;

}

装箱问题C语言报告,装包装箱问题 (C语言代码)相关推荐

  1. c语言报告总结PPT,C语言程序总结.ppt

    C语言程序总结.ppt 例2 求两数之和#include void main( ) /*求两数之和*/{ int a,b,sum; /*声明,定义变量为整型*/ /*以下3行为C语句 */ a=123 ...

  2. 华中科技大学c语言报告,华中科技大学c语言实验报告

    华中科技大学c语言实验报告 课 程 实 验 报 告课程名称: C 语言程序设计 专业班级: CS1409 学 号: U201414813 姓 名: 唐礼威 指导教师: 吴海 报告日期: 2015 年 ...

  3. c语言报告西电,c语言课程设计报告西安电子科技大学.docx

    C语言课程设计 题目名称: 7组 姓 名 学 号 130403100 专 业 自动化专业 班 级 1304031 指导教师 冯兰胜 编写日期 2016.5.16 需求分析 4.19 递归反向输出字符串 ...

  4. SOR迭代法c语言报告,SOR迭代_C语言代码

    # include # include #include float **a; /*存放A矩阵*/ float *b; /*存放b矩阵*/ float *x; /*存放x矩阵*/ float p; / ...

  5. Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议

    Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 原文:Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 在上一篇中,留下了许可协议的问题,目前已经解决.感谢网友武全的指点 ...

  6. 仪表仪器信息管理C语言,仪器仪表管理系统C语言课程实习报告

    仪器仪表管理系统C语言课程实习报告 1C 语言课程实习报告学 院: 计算机学院专 业: 计算机科学与技术班 级: 191114学 号: 20111002635姓 名: 高跃攀2题目要求19.仪器仪表管 ...

  7. c 语言差错编码实验结果,C语言程序设计实验报告(四).doc11111111111111111.doc

    C语言程序设计实验报告(四).doc11111111111111111 C语言程序设计实验报告 姓 名吴文重学 号52系 别数学系班级2班主讲教师徐时芳指导教师徐时芳实验日期2011-11-8专业10 ...

  8. 上海电力大学c语言程序设计章测试,上海电力学院c语言报告:实验8 指针.doc

    上海电力学院c语言报告:实验8 指针.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印 ...

  9. c语言标准化考试程序报告,在线考试系统-c语言报告.doc

    在线考试系统-c语言报告 课 程 报 告 课 程 名 称: 程序设计实践 课程报告任务书 题 目标准化考试系统主要 内容开发出一个标准化考试系统,所谓标准化考试系统即仅支持选择题型的考试系统,要求实现 ...

最新文章

  1. java新特性对数组的支持
  2. kettle分批处理大表数据_kettle-批量同步表数据
  3. linux bash 学习
  4. python设置坐标轴刻度值字体大小_python 设置xlabel,ylabel 坐标轴字体大小,字体类型...
  5. C++ Primer 5th笔记(chap 13 拷贝控制)析构函数
  6. nginx反向代理和shiro权限校验产生的404问题
  7. 三位数倒序数C语言,C语言求助!一个三位数的逆序数,总是编不对
  8. 使用jdbcTemplate查询返回自定义对象集合
  9. LeetCode(590)——N叉树的后序遍历(JavaScript)
  10. 【rabbitmq】Queueingconsumer被废止后老代码如何做的解决方案
  11. Java数据类型从小到大排序_编写一个字符串排序程序,对一个字符串的数值进行从小到大的排序,要求使用包装类对数值类型的字符串转换成整型进行排序...
  12. ipad协议更新非常稳定
  13. 高中计算机绘画教,高中美术电脑绘画教案.doc
  14. OrCAD中PSpice K_Linear以及变压器的使用方法
  15. 关于Java的点点滴滴(1)——Static关键字
  16. Android 创建随机数生成器
  17. 自制JDM+IC Prog 1.06A烧写12C508A成功
  18. Google浏览器主页被搜狗导航劫持解决方法(也适用于火狐浏览器)
  19. 函数平移口诀_二次函数平移规律口诀
  20. 什么是研究用计算机系统解释图,适形铅模CADCAM系统中图像识别技术研究.pdf

热门文章

  1. 广告植入、电商导流……“变味”的线上演唱会
  2. es文件浏览器自动上传ftp服务器,es文件浏览器访问ftp服务器
  3. 计算机一级挂科率,[转]计算机一级难吗?看了它想挂科,难难难难把此(精)
  4. ibatis mysql 配置文件详解_MyBatis Generator 配置文件详解
  5. mysql默认排序规则_mysql 字符集与排序规则的简单了解
  6. [一] 详细讲解: 线性表链式存储结构 中的 单链表; (数据结构和算法)
  7. 四种python 单继承的实现方式
  8. python中 time、datetime、random模块
  9. Python判断字符串是否xx开始或结尾
  10. Python——有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?