OpenJudge 2817:木棒 / Poj 1011 Sticks
1.链接地址:
http://bailian.openjudge.cn/practice/2817/
http://poj.org/problem?id=1011
2.题目:
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 乔治拿来一组等长的木棒,将它们随机地裁断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘 记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。
- 输入
- 输入包含多组数据,每组数据包括两行。第一行是一个不超过64的整数,表示砍断之后共有多少节木棍。第二行是截断以后,所得到的各节木棍的长度。在最后一组数据之后,是一个零。
- 输出
- 为每组数据,分别输出原始木棒的可能最小长度,每组数据占一行。
- 样例输入
9
5 2 1 5 2 1 5 2 1
4
1 2 3 4
0- 样例输出
6
5- 来源
- POJ 1011
3.思路:
递归 + 剪枝
4.代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib> using namespace std; int cmp(const void *a,const void *b)
{
int ia = *((int *)a);
int ib = *((int *)b); return ib - ia;
} int k;
int L; bool f(int *sticks,int left_L,int left_n)
{ int i;
int flag = true; //cout<< "f(" << "," << left_L << "," << left_n << ")" <<endl;
//for(i = 0; i < k; ++i) cout << sticks[i] << " ";
//cout << endl; for(i = ; i < k; ++i)
{ if(sticks[i] != )
{
flag = false;
int temp;
if(sticks[i] == left_L)
{
temp = sticks[i];
sticks[i] = ;
if(f(sticks,L,left_n - )) return true;
sticks[i] = temp;
}
else if(sticks[i] < left_L)
{
temp = sticks[i];
sticks[i] = ;
if(f(sticks,left_L - temp,left_n)) return true;
sticks[i] = temp;
}
else continue; if(left_L == L || sticks[i] == left_L) break;//Less 1
}
} if(flag && left_n == ) return true;
else return false;
} int main()
{
//freopen("C://input.txt","r",stdin); int i; while(cin>>k)
{
if(k == ) break; int *sticks = new int[k];
memset(sticks,,sizeof(k)); for(i = ; i < k; ++i) cin >> sticks[i]; qsort(sticks,k,sizeof(int),cmp); int sum = ;
for(i = ; i < k; ++i) sum += sticks[i]; int n;
for(L = sticks[]; L <= sum; ++L)
{
if(sum % L != ) continue; n = sum / L;
if(f(sticks,L,n))
{
cout << L << endl;
break;
}
}
}
return ;
}
OpenJudge 2817:木棒 / Poj 1011 Sticks的更多相关文章
- 搜索+剪枝——POJ 1011 Sticks
搜索+剪枝--POJ 1011 Sticks 博客分类: 算法 非常经典的搜索题目,第一次做还是暑假集训的时候,前天又把它翻了出来 本来是想找点手感的,不想在原先思路的基础上,竟把它做出来了而且还是0 ...
- DFS(剪枝) POJ 1011 Sticks
题目传送门 /* 题意:若干小木棍,是由多条相同长度的长木棍分割而成,问最小的原来长木棍的长度: DFS剪枝:剪枝搜索的好题!TLE好几次,终于剪枝完全! 剪枝主要在4和5:4 相同长度的木棍不再搜索 ...
- POJ 1011 - Sticks DFS+剪枝
POJ 1011 - Sticks 题意: 一把等长的木段被随机砍成 n 条小木条 已知他们各自的长度,问原来这些木段可能的最小长度是多少 分析: 1. 该长度必能被总长整除 ...
- POJ 1011 Sticks 【DFS 剪枝】
题目链接:http://poj.org/problem?id=1011 Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissio ...
- poj 1011 Sticks
Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 126238 Accepted: 29477 Descrip ...
- poj 1011 Sticks (DFS+剪枝)
Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 127771 Accepted: 29926 Descrip ...
- POJ 1011 Sticks dfs,剪枝 难度:2
http://poj.org/problem?id=1011 要把所给的集合分成几个集合,每个集合相加之和ans相等,且ans最小,因为这个和ans只在[1,64*50]内,所以可以用dfs一试 首先 ...
- poj 1011 Sticks ,剪枝神题
木棒 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 118943 Accepted: 27429 Description 乔治拿 ...
- POJ 1011 Sticks(dfs+剪枝)
http://poj.org/problem?id=1011 题意:若干个相同长度的棍子被剪成若干长度的小棍,求每根棍子原来的可能最小长度. 思路:很经典的搜索题. 我一开始各种超时,这题需要很多剪枝 ...
随机推荐
- nonce和timestamp在Http安全协议中的作用
前段时间给客户网站做新浪微博账号登录功能,对OAuth协议以及相关的一些安全协议做了一些研究,顺便就记录一下学习心得吧.在这里就不打算具体讲OAuth的协议流程了,而是针对OAuth请求头里的nonc ...
- 不同linux系统添加开机启动程序的命令
see http://phpcj.org/blog/%E4%B8%8D%E5%90%8Clinux%E7%B3%BB%E7%BB%9F%E6%B7%BB%E5%8A%A0%E5%BC%80%E6%9C ...
- Linux dd——备份命令
Linux学习笔记之备份命令dd 功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换.可以用该命令实现DOS下的diskcopy命令的作用.先用dd命令把软盘上的数据写成硬 ...
- 插件就是生产力——那些不能错过的XCode插件们
古人云"工欲善其事必先利其器",打造一个强大的开发环境,是立即提升自身战斗力的绝佳途径! 晾一下我的武器库,欢迎大家选用:) 全能搜索家CodePilot 2.0 -------- ...
- Day03 - Python 函数
1. 函数简介 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print():也可以自己创建函数,这 ...
- 程序员谈学习:我为什么要学习Linux?
http://kb.cnblogs.com/page/196876/ 好长时间没好好写点东西了,前段时间由于项目的需要出差了一个多月,期间各种加班,每天晚上加班到十点,回到宾馆实现是没什么精力再写博客 ...
- 深入理解Binder(二),Binder是什么?
上篇文章深入理解Binder(一),从AIDL谈起我们介绍了AIDL的基本使用,用AIDL两个App的通信是实现了,可是又有小伙伴疑惑了,为什么使用AIDL就能够实现两个App之间的通信?本文我们就来 ...
- Linux批量替换文件内容
问题描述:现在需要将rack1目录下*.send文件中的"-ip="替换成“-localIp=10.0.0.1/n-ip=” 刚才那个批量文本内容替换,只能替换内存中的内容,并不会 ...
- 给某个view增加颜色渐变图层
//给某个view增加颜色透明度渐变图层 - (void) insertTransparentGradient { NSLog(@"%@",NSStringFromCGRect(s ...
- Find security bugs学习笔记V1.0
Find security bugs学习笔记V1.0 http://www.docin.com/p-779309481.html