试题 算法训练 小木棍

资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
问题描述
  RJ有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 50。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。
  给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。
输入格式
  第一行为一个单独的整数 N 表示看过以后的小木柜的总数,其中 N<=60;

第二行为 N 个用空个隔开的正整数,表示 N 跟小木棍的长度。。
输出格式
  输出文件仅一行,表示要求的原始木棍的最小可能长度。
样例输入
9
5 2 1 5 2 1 5 2 1
样例输出
6
提交代码:

#include<stdio.h>
#include<algorithm>
using namespace std;
int n;
int a[100],book[100];
bool cmp(int x,int y)
{return x>y;
}
int len,cnt;
int dfs(int num,int lasti,int l)
{//num为拼好的个数,lasti为上一个的编号,l为已拼成的长度if(num==cnt+1) //表示拼成了cnt根小木棍且小木棍没有剩余,符合题目所求return 1;if(l==len)//拼成一个len长度num+1return dfs(num+1,1,0);for(int i=lasti; i<=n; i++)//剪枝,当用木棍i拼接最初的木棍时,可以从第i+1后的木棍开始搜索,因为排序,前面的木棍已经用过了{if(!book[i]&&l+a[i]<=len)  //保证当前长度加上正在选的小木棍长度不大于len,如果大于len就是没有小木棍可以拼成len长度的小木棍,不符合条件{book[i]=1;if(dfs(num,i+1,l+a[i]))return 1;book[i]=0;//深搜搜索后要取消标记if(l==0||l+a[i]==len)//剪枝,找不到能拼成len长度的木棍return 0;while(a[i]==a[i+1])//去重剪枝 相同长度的不符合条件的则不需再搜索i++;}}return 0;
}
int main()
{scanf("%d",&n);int s=0;//排序,最初小木棍的长度一定大于等于砍断后的小木棍的最大的长度,并且小于所有小木棍的长度之和for(int i=1; i<=n; i++){scanf("%d",&a[i]);s+=a[i];}sort(a+1,a+1+n,cmp);//所有小木棍的长度之和为s,则拼成若干根的小木棍的长度一定能被s整除,否则就拼不成,因为拼成的小木棍必须是整数根for(len=a[1]; len<=s; len++){if(s%len==0){cnt=s/len;if(dfs(1,1,0))break;}}printf("%d\n",len);return 0;
}

试题 算法训练 小木棍相关推荐

  1. 试题 算法训练 粘木棍

    试题 算法训练 粘木棍 问题描述 有N根木棍,需要将其粘贴成M个长木棍,使得最长的和最短的的差距最小. 输入格式 第一行两个整数N,M. 一行N个整数,表示木棍的长度. 输出格式 一行一个整数,表示最 ...

  2. 试题 算法训练 小明爬山

    问题描述 你有个同学叫小明,他早听闻祖国河山秀丽,于是有一个爬山的计划,并列了一张所有山的高度表,而又因"人往高处走"的说法,所以他希望爬的每一座山都比前一座要高,并且不能改变山的 ...

  3. 试题 算法训练 粘木棍 c++

    #include<bits/stdc++.h> using namespace std; int a[11],b[11],f[9999],n,m; int diff=0x7fffffff; ...

  4. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解 - 未完善

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  5. 蓝桥杯试题 算法训练 印章

    试题 算法训练 印章 C/C++ 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 ...

  6. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  7. 试题 算法训练 九宫格的奥(解题思路与代码)

    试题 算法训练 九宫格的奥(解题思路与代码) 解题思路 解题思路 通过题目我们了解到此题有三个小题,分别代表不同的功能,但总的功能就是,判断九宫格里面的数字还原成"标准型"九宫格时 ...

  8. 蓝桥杯 试题 算法训练 无聊的逗

    蓝桥杯 试题 算法训练 无聊的逗 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘 ...

  9. 蓝桥杯练习系统:【试题 算法训练 最大质因数】

    试题 算法训练 最大质因数 时间限制:1.0s 内存限制:256.0MB 问题描述 *** 给出N个数字,求出有最大的最大质因数的那个数 输入格式 第一行:一个整数N. 接下来的N行,每行一个整数A_ ...

最新文章

  1. 释放CPU,算力经济下DPU芯片的发展机遇
  2. C#反射在ADO中的巧用
  3. pyqt5讲解12:自定义参数 (给信号传入参数)
  4. Robot Framework--环境搭建
  5. 移动端视频缓存保障与CDN调度优化
  6. Android之实现Room升级需要给一个表增加一个字段
  7. jvmti_JVMTI标记如何影响GC暂停
  8. 系统学习深度学习(一) --深度学习与神经网络关系
  9. escapexml java_fn:escapeXml()函数
  10. HTC6950新手基本操作方法
  11. java软尾山地车评测_GT Sensor X Pro 软尾山地自行车测评
  12. Siebel学习笔记
  13. 计算机教师个人品德事迹材料,教师个人品德事迹材料
  14. 报错:Exception opening socket
  15. 项目经理OA选型 Teambition、Worktile、iQuicker、Tower
  16. 爬虫有道词典,高精度加密版
  17. 吉信通接收回复(http) java
  18. diffusion medical image segmentation
  19. 服务器在无盘网吧的现在与将来(3)
  20. 安卓角色扮演游戏源码_角色扮演类安卓手游排行榜 热门手游推荐

热门文章

  1. wget数据下载失败:HTTP request sent, awaiting response... 401 Unauthorized Unknown authentication
  2. Java并发包中常用类小结(一)
  3. jeecg-boot字典翻译改造(支持实体类详情查询自动翻译)
  4. JS 封装节流(后期优化)
  5. 2021-08-23 nodejs中设置cookie的步骤
  6. jhat命令分析hprof文件
  7. springboot研究九:lettuce连接池很香,撸撸它的源代码
  8. 解决Vmware虚拟机无法打开Ubuntu的问题
  9. 【转】牛逼闪闪的Ruby迭代器
  10. 北京交通大学软件学院保研面经