博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1455 搜索经典
阅读量:5098 次
发布时间:2019-06-13

本文共 1246 字,大约阅读时间需要 4 分钟。

讲的大致是几根原本长度相同的木棒,然后被某人当出气筒剪啊剪啊,剪成好几段,然后,好吧,这时间一长记性就差了,忘了原来这堆木棒的长度。。。orz,我这若菜,也只能帮您推算出原来这堆木棒的可能的最短长度了。。。

搜索中的经典之经典,必须掌握啊。。。。

 

1 #include
2 #include
3 #include
4 using namespace std; 5 6 struct stick{ 7 int length; //长度 8 int mark; //标记是否被使用过 9 };10 stick sticks[64];11 int n,num,sum;12 13 int cmp(const stick &s1,const stick &s2){14 return s1.length>s2.length;15 }16 //len当前的长度,count当前长度为len的木棒的根数17 int dfs(int len,int l,int count,int pos){18 if(len==sum)return 1;//如果当期的长度就是所有木棒的总长19 if(count==num)return 1;20 for(int i=pos;i
(sticks[i].length+l)){30 sticks[i].mark=1;31 l+=sticks[i].length;32 if(dfs(len,l,count,i+1))33 return 1;34 l-=sticks[i].length;//如果不成功,就要恢复35 sticks[i].mark=0;36 if(l==0)return 0;//当前搜索,如果前面的l为0,但第一根没有用上,那么这根木棒就要舍弃37 while(sticks[i].length==sticks[i+1].length)i++;//这根不成功的话,则相连的长度相同的不要38 }39 }40 return 0;41 }42 43 int main(){44 while(scanf("%d",&n)!=EOF){45 if(n==0)break;46 sum=0;47 for(int i=0;i

 

转载于:https://www.cnblogs.com/wally/archive/2013/01/28/2880128.html

你可能感兴趣的文章
1.linux ping:unknown host www.***.***
查看>>
http://jingyan.baidu.com/article/dca1fa6fa07000f1a44052f6.html
查看>>
第三方支付架构设计之—帐户体系
查看>>
诸城项目-开发日志
查看>>
fdisk (二) 详解(转)
查看>>
hdu 2768 Cat vs. Dog 最大独立集 巧妙的建图
查看>>
简单将集合的内容转为字符串
查看>>
Python pandas 0.19.1 Intro to Data Structures 数据结构介绍 文档翻译
查看>>
《寿康宝鉴》
查看>>
Mongodb
查看>>
软工个人总结
查看>>
如何将u盘、移动硬盘转化为活动分区--绝招
查看>>
MYSQL 5.7 修改密码、登录问题
查看>>
linux 同步时间 调试core内核
查看>>
PAT Basic 1085
查看>>
springMVC传递一组对象的接受方式
查看>>
收藏一个虚函数表以及虚表指针介绍的文章
查看>>
POJ---2492 A Bug's Life[并查集]
查看>>
[BZOJ1195] [HNOI2006]最短母串
查看>>
final阶段140字评论
查看>>