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

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

讲的大致是几根原本长度相同的木棒,然后被某人当出气筒剪啊剪啊,剪成好几段,然后,好吧,这时间一长记性就差了,忘了原来这堆木棒的长度。。。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

 

转载地址:http://ajyao.baihongyu.com/

你可能感兴趣的文章
百度ueditor 1.4.3 jsp开发版简单配置及图片上传
查看>>
git使用
查看>>
日志分析-2.发送windows日志到一个远程的rsyslog服务器上
查看>>
分析现在互联网上信息可信性的现状
查看>>
centos 安装yum网络源
查看>>
Android JSBridge的原理与实现
查看>>
命令行记录
查看>>
如何使用jquery获取 (滚动条)距离(页面底部)的距离
查看>>
移动前端开发之viewport的深入理解
查看>>
Javascript window.open使用POST传递值
查看>>
2016年2月18日:Spring Retry
查看>>
基于Spring Boot + Dubbo的全链路日志追踪(一)
查看>>
002 centos 安装hadoop
查看>>
puppet on windows
查看>>
岁末说安全 详解U-Mail邮件服务器多重防护盾
查看>>
数组顺序存储二叉树
查看>>
excel導出框架
查看>>
maven 编译 run test的时候控制台输出乱码信息
查看>>
SpringMVC实现上传和下载
查看>>
C#基础知识整理:基础知识(14) 数组
查看>>