博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1011
阅读量:4625 次
发布时间:2019-06-09

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

题目大意:给出一些长度不大于 50 的木棍, 要求你把这些小木棍拼成

             长度相同木棍,当然长度越小越好。

剪枝:

1.最长的木棍的长度一定不会超过以前的木棍长度,所以从最长的长度开始枚举

2.如果总长度不能被选中的长度整除剪掉

3.如果所求木棍数等于总长度除以所枚举的木棍长度返回,不要再向下搜索

4.每加入一个木棍做一下标记,以免被再次搜索

5.从大到小排序,这样如果当前的不能被加入,太大了,只要往后搜小的就行 

6.如果向下搜索失败回退回来,下一根木块与当前这根碎木块长度相同,则不需要对他进行搜索了,直接跳过

自己写的超时代码,水平不够,继续努力

1 import java.util.Arrays; 2 import java.io.BufferedReader; 3 import java.io.InputStreamReader; 4 import java.util.StringTokenizer; 5  6 public class Main{ 7     static int lens[]; 8     static boolean visit[]; 9     10     public static boolean dfs(int len,int cur,int index,int cnt,int j,int n){ // len目标长度,cur当前木棍的长度,index木棍的下标,                                                         11         if(cnt == j){                                                         //cnt已经拼成的目标木棍数量,j总共需拼成的目标木棍的数量12             return true;13         }                                         14         else if(len == cur){    15             return dfs(len,0,0,cnt+1,j,n);16         }17             18         else{19             int i;20             int sample = -1;21             for(i=index;i

 

转载于:https://www.cnblogs.com/yong-hua/p/4482127.html

你可能感兴趣的文章
yii框架开启事务
查看>>
Chrome F12调试
查看>>
扩容 /dev/mapper/centos-root空间的过程记录
查看>>
经典案例复盘——运维专家讲述如何实现K8S落地
查看>>
【HTML5】---【HTML5提供的一些新的标签用法以及和HTML 4的区别】
查看>>
添加sudo命令
查看>>
策略模式,我与你的三次相遇。
查看>>
43左旋转字符串+三步反转法
查看>>
CTF线下赛AWD模式下的生存技巧
查看>>
我的思想境界
查看>>
QML与C++交互:在qml中使用QSqlQueryModel显示数据库数据
查看>>
在VM已安装Android4.4 连接小米手环 网络设置
查看>>
HDU4939Stupid Tower Defense (有思想的dp)
查看>>
原生ajax
查看>>
图像腐蚀与图像膨胀(18)
查看>>
NSlog 对于新手的一点技巧和用法.
查看>>
eclipse项目中出项红色的叹号(!)和当运行时找不到主类或者是无法加载主类...
查看>>
第六章小结
查看>>
C++中使用模板template递归函数
查看>>
Check the string
查看>>