2017年蓝桥杯模拟赛-7礼物盒
小y 有一个宽度为 100cm,高度为 20cm,深度为 1cm 的柜子,如下图。
小y 还有 363636 个礼物盒,他们的深度都为 1cm。
他们对应的宽度和高度如下,单位(cm)。
11 3
8 12
11 17
16 13
1 14
2 8
6 10
10 18
17 11
10 15
6 14
5 6
2 19
19 10
4 9
7 9
5 14
5 20
15 19
3 17
15 11
7 25
11 20
9 12
17 4
9 19
4 18
10 10
12 19
17 3
19 9
20 16
11 16
10 2
20 15
3 14
数据可以参考 礼物盒的数据。
现在小y 想把这些盒子放到柜子上,由于礼物盒里面都装有礼物,礼物盒必须向上放置,并且不能堆放。由于礼物盒深度和柜子深度一样,所以礼物盒和柜子深度方向也必须一致。并且礼物盒的高度还不能大于柜子的高度,否者放不进去。小y 希望放到柜子上礼物盒的宽度和正好等于柜子的宽度,也就是希望柜子两边都不存在间隙。如下图符合条件的放置。
满足条件的情况下,小y 希望能尽可能多的放置礼物盒,算出最多能放多少个礼物盒。
#include <stdio.h>
int main() {printf("%d\n",// 在下方填入答案);return 0;
}
使用DFS深度遍历搜索:
#include <iostream>using namespace std;int box[36][2]={
{11,3},{8,12},{11,17},{16,13},{1,14},{2,8},
{6,10},{10,18},{17,11},{10,15},{6,14},{5,6},
{2,19},{19,10},{4,9},{7,9},{5,14},{5,20},
{15,19},{3,17},{15,11},{7,25},{11,20},{9,12},
{17,4},{9,19},{4,18},{10,10},{12,19},{17,3},
{19,9},{20,16},{11,16},{10,2},{20,15},{3,14}};int sum=0;//盒子的总数//count:盒子的数量,width:现在的宽度,i:数组的行数(数据的个数)
void dfs(int count,int width,int i)
{if(width==100)//先判断是否满足目标状态(width==100),如果是的话,do something{if(count>sum){sum=count;}return;//如果是目标状态,就return吧}if(width>100||i>35)//判断该状态是否合法,不合法return掉{return;}if(box[i][1]<=20)//判断是否高度小于20{dfs(count+1,width+box[i][0],i+1);//进入新状态}dfs(count,width,i+1);//进入新状态}int main()
{dfs(0,0,0);//DFS的初始状态cout<<sum;return 0;
}
#include <iostream>using namespace std;int box[36][2]=
{{11,3},{8,12},{11,17},{16,13},{1,14},{2,8},{6,10},{10,18},{17,11},{10,15},{6,14},{5,6},{2,19},{19,10},{4,9},{7,9},{5,14},{5,20},{15,19},{3,17},{15,11},{7,25},{11,20},{9,12},{17,4},{9,19},{4,18},{10,10},{12,19},{17,3},{19,9},{20,16},{11,16},{10,2},{20,15},{3,14}
};int sum=0;//盒子的总数//count:盒子的数量,width:现在的宽度,i:数组的行数(数据的个数)
void dfs(int count,int width,int i)
{if(width==100)//先判断是否满足目标状态(width==100),如果是的话,do something{if(count>sum){sum=count;}return;//如果是目标状态,就return吧}if(width>100||i>35)//判断该状态是否合法,不合法return掉{return;}if(box[i][1]<=20)//判断是否高度小于20{dfs(count+1,width+box[i][0],i+1);//进入新状态//如果width+box[35][0]刚好==100,i+1==36,这个状态也是合法的}dfs(count,width,i+1);//进入新状态}int main()
{dfs(0,0,0);//DFS的初始状态cout<<sum;return 0;
}/*************************************************************************************************************/
/*
#include <iostream>using namespace std;int box[36][2]=
{{11,3},{8,12},{11,17},{16,13},{1,14},{2,8},{6,10},{10,18},{17,11},{10,15},{6,14},{5,6},{2,19},{19,10},{4,9},{7,9},{5,14},{5,20},{15,19},{3,17},{15,11},{7,25},{11,20},{9,12},{17,4},{9,19},{4,18},{10,10},{12,19},{17,3},{19,9},{20,16},{11,16},{10,2},{20,15},{3,14}
};int sum=0;//盒子的总数//count:盒子的数量,width:现在的宽度,i:数组的行数(数据的个数)
void dfs(int count,int width,int i)
{if(width>100||i>35+1)//判断该状态是否合法,不合法return掉 //如果width+box[35][0]刚好==100,i+1==36,这个状态也是合法的{return;}if(width==100)//先判断是否满足目标状态(width==100),如果是的话,do something{if(count>sum){sum=count;}return;//如果是目标状态,就return吧}if(box[i][1]<=20)//判断是否高度小于20{dfs(count+1,width+box[i][0],i+1);//进入新状态//如果width+box[35][0]刚好==100,i+1==36,这个状态也是合法的
}
dfs(count,width,i+1);//进入新状态}int main()
{dfs(0,0,0);//DFS的初始状态cout<<sum;return 0;
}
*/
2017年蓝桥杯模拟赛-7礼物盒相关推荐
- 计蒜客蓝桥杯模拟赛5 礼物盒
题目描述: 第七题 小y 有一个宽度为 100cm,高度为 20cm,深度为 1cm 的柜子,如下图. 小y 还有 3636 个礼物盒,他们的深度都为 1cm. 他们对应的宽度和高度如下,单位(cm) ...
- 2017年蓝桥杯模拟赛
1.标题:算年龄 英国数学家德摩根出生于19世纪初叶(即18xx年). 他年少时便很有才华.一次有人问他的年龄,他回答说: "到了x的平方那年,我刚好是x岁". 请你计算一下,德摩 ...
- 【蓝桥杯Web】大一小白参与蓝桥杯模拟赛二期web组体会
目录 前言 一.相关比赛介绍 1.ACM国际大学生程序设计竞赛 2.蓝桥杯 3.GPLT团队程序设计天梯赛 4.leetcode周赛和双周赛 5.PAT 二.蓝桥杯 1.应该参加蓝桥杯吗? 2.如何进 ...
- 2020年蓝桥杯模拟赛2020.3.25直播笔记
2020年蓝桥杯模拟赛解题报告(CPP版本) 第八题 长草的bfs写法[我想暴力模拟O kmn] 深搜会爆 bfs像投到水里的涟漪 问题: const int dx[] = {1, 0, -1, 0} ...
- 第十三届蓝桥杯模拟赛第二期JAVA组个人题解
第十三届蓝桥杯模拟赛第二期JAVA组个人题解 文章目录 第十三届蓝桥杯模拟赛第二期JAVA组个人题解 题目1 题目2 题目3 题目4 题目5 题目6 题目7 题目8 题目9 题目10 题目1 小蓝的I ...
- 蓝桥杯模拟赛第二场(web)
文章目录 蓝桥杯模拟赛第二场(web) 1 卡片化标签页 2 随机数生成器 3 个人博客 4 学生成绩统计 5 水果摆盘 6 给页面化个妆 7 小兔子爬楼梯 8 时间管理大师 9 购物车 10 菜单树 ...
- 第十三届蓝桥杯模拟赛(第三期)试题与题解 C++
文章目录 第十三届蓝桥杯模拟赛(第三期)试题与题解 1.试题A 题解:数制转换 2.试题B 题解:枚举 3.试题C 题解:枚举 4.试题D 题解:最小生成树 5.试题E 方法一:暴力求和 方法二:一维 ...
- 2022 第十四届蓝桥杯模拟赛第一期(题解与标程)
第十四届蓝桥杯模拟赛第一期 1. 二进制位数 问题描述 答案提交 参考答案 2. 晨跑 问题描述 答案提交 参考答案 3. 调和级数 问题描述 答案提交 参考答案 程序验证 4. 山谷 问题描述 答案 ...
- # 2017年蓝桥杯省赛cc++本科B组试题
2017年蓝桥杯省赛c/c++本科B组试题 第一题:购物单 问题 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大 ...
最新文章
- [转载] 民兵葛二蛋——第2集
- R语言dplyr包通过数据列的索引重命名数据列实战(Rename Column by Index Position)
- 【Mysql】Mysql root 权限下无法创建数据库
- guava之preconditions
- Maven-学习笔记04【基础-Maven生命周期和概念模型图】
- 如何向微软 Docs 和本地化社区提交翻译贡献
- windows版本的clion软件除了使用wsl配置Ubuntu子系统外,还可以使用MinGW-w64来配置gcc和g++
- 什么是掼蛋游戏呼叫中心
- Python 3 的新特性zz
- 微信小程序和传统网页开发的区别
- vivo X30 5G版现身Geekbench:搭载三星Exynos 980
- 纯CSS打造圆角Table效果
- CDH中配置hive支持update delete
- opencv调用摄像头
- mysql语句解析_MYSQL中SQL执行分析
- Linux - 搭建LDAP统一认证服务
- m3u8解析php,PHP解码转发M3U8 PHP读取转发M3U8的方法
- Python 网络编程入门——用 Socket 做一个风花雪月服务器
- Java实现生成并下载Excel文件
- python大数据工程师薪资待遇_2019年就业薪资,凭什么大数据工程师遥遥领先?...