迭代加深搜索实际上是人为规定搜索深度的DFS。从小到大枚举深度上限maxd,每次执行只考虑深度不超过maxd的结点。这样,只要解的深度有限,就一定可以在有限时间内枚举到。
对于可以用回溯法求解但解答树深度没有明显上限的题目,可以考虑使用迭代加深搜索。
埃及分数问题
在古埃及,人们使用单位分数的和(即1/a,a是自然数)表示一切有理数。例如,2/3 = 1/2 + 1/6
,但不允许2/3 = 1/3 + 1/3
,因为在加数中不允许有相同的。
对于一个分数a/b,表示方法有很多种,其中加数少的比加数多的好,如果加数个数相同,则最小的分数越大越好。例如,19/45 = 1/5 + 1/6 + 1/18
是最优方案。
输入整数a,b(0< a < b < 500),计算最佳表达式。
代码
1 | /* |