从一个基本方法谈起.pptVIP

  • 1
  • 0
  • 约6.5千字
  • 约 40页
  • 2018-12-25 发布于湖北
  • 举报
例5 聪明的打字员 例: 如果通过k次可达到排列356124(其中红色表示光标达到过的位置) 最后的密码如果是371194,则通过这种方案需要一共操作k+(7-5)+(6-1)+(9-2)=14+k步 最后通过所有排列方案求得的步数中取一个最小值,即为答案。 搜索的剪枝 通常情况下,搜索的剪枝考虑下面几个方面: 判重:避免枚举重复的节点 最优化剪枝:如果当前部分搜索方案比目前求得的最优方案还要差,则剪枝。 可行性剪枝:如果可以判断继续按当前方向搜索下去,必定无解或者达不到最优解,则剪枝。 例6 木棍问题 John有一组等长的木棍,他将它们随机地截断,使得每一节木棒都不超过50个单位长度。然后他又想要把这些木棒拼接恢复到裁切之前的长度,但他却忘了木棒的初始长度。 现在给你裁切之后的所有木棒的长度,请求出初始木棒的最小可能长度。 裁切后木棒根数64 例6 木棍问题 我们考虑从小到大枚举初始木棒的长度,然后判断这个长度可不可以由当前的木棒拼接而成。(枚举的边界?) 深度优先搜索(下面函数头仅供参考) bool check(int k, int now, int largest, int len, int tot) k:当前在拼第几根 now:当前这根拼了多长 largest: 当前未被用上的最长的木棍编号 len:初始木棒的长度 //可定义为全程变量 tot:初

文档评论(0)

1亿VIP精品文档

相关文档