poj1011——Sticks
来源:互联网 发布:软件测试面试大全 编辑:程序博客网 时间:2024/06/05 17:19
题目大意:取一些长度相同的木棍,将他们切割成随意长度的小木棍,现在要将他们拼回原状,问每根原始木棍的长度最小值
输入:(输入以0结束)
切割后的木棍个数(最多64个)
每个棍的长度(中间用空格分隔)
输出:木棍的原长度最小值
分析:dfs+剪枝
大致思路:最长的小木棍max,和所有小木棍长度的总和sum,那么原木棍长度一定在max~sum之间,从max开始枚举能被sum整除的原木棍长度len,再dfs(枚举从某个小木棍开始,能不能拼凑成len长)求出所有小木棍能否拼凑出这个长度
各种剪枝:1.所有小木棍按长度从大到小排序(越长的小木棍对后面小木棍的约束就越大,按降序排列可能会在最靠近根的地方剪枝)
2.跳过重复长度的小木棍(比如当前木棍与小木棍A组合dfs发现不能凑成len,后面所有跟A长度相同的小木棍就不用再组合了)
3.如果当前最长小木棍都不能凑成len,则返回上一步,更改上一步的组合情况
代码:转载自http://blog.sina.com.cn/s/blog_6635898a0100lgq0.html
#include<iostream>
#include<algorithm>
using namespace std;
const int Max = 65;
int n, len, stick[Max];
bool flag, vis[Max];
bool cmp(int a, int b){
}
void dfs(int dep, int now_len, int u){
}
int main(){
}
- poj1011——Sticks
- poj1011——Sticks(dfs+剪枝)
- poj1011 sticks
- POJ1011 Sticks
- POJ1011 Sticks
- poj1011 - Sticks
- POJ1011-Sticks
- POJ1011 Sticks
- POJ1011 Sticks
- poj1011 (Sticks)
- poj1011 Sticks
- poj1011 Sticks
- poj1011 sticks
- 【poj1011】 Sticks
- POJ1011 Sticks
- poj1011 sticks
- poj1011:Sticks
- poj1011-Sticks
- webstorm打开的页面如何通过手机访问?
- Cent OS 7 搭建MySQL
- 如何实现MathType公式转换LaTeX代码
- mysql5.7 Access denied for user 'root'@'localhost'
- 时间和数量排序
- poj1011——Sticks
- 开始Bolg记录之路
- qt5.8.0 mingw 操作mysql5.6.24 插入中文乱码解决方案
- 使用dispatch_group_t 解决多个接口协调调用问题
- POJ2507 Crossed ladders(几何推公式+二分)
- SQLAlchemy ---查询方式
- redis配置
- 使用Dockerfile构建容器
- thinkpad DS-8A8SH光驱 升级 KU54 固件后不读盘的解决办法