1
9
只要做 iterative deepening search .
然后打电话,说,
|
2
3
解释“升序”需求有两种方法。更宽松的解释是“在每个列表中,整数应该以升序出现”。更严格的解释是“名单需要按顺序排列”。我想这就是你想要的,但是我想出了一个简单的迭代方法来满足更宽松的需求。 对于n个项目,通过所有n位数字进行计数。如果一个项目对应的位在那里,那么它就在结果列表中。
1,2,3,4,5的结果是: [] 〔1〕; 〔2〕; [ 1, 2 ], 〔3〕; 〔1, 3〕; 〔2, 3〕; 〔1, 2, 3〕; 〔4〕; 〔1, 4〕; 〔2, 4〕; 〔1, 2, 4〕; 〔3, 4〕; 〔1, 3, 4〕; 〔2, 3, 4〕; [1,2,3,4], 〔5〕; 〔1, 5〕; 〔2, 5〕; 〔1, 2, 5〕; 〔3, 5〕; 〔1, 3, 5〕; 〔2, 3, 5〕; [1,2,3,5], 〔4, 5〕; 〔1, 4, 5〕; 〔2, 4, 5〕; [1,2,4,5], 〔3, 4, 5〕; [1,3,4,5], [2,3,4,5], [1,2,3,4,5] 是的,我知道,我因为不使用递归而失分。 |
3
1
我在考虑这个问题,并意识到它可以有效地使用动态编程方法。下面是我给出的迭代解,它使用
我相信这比递归迭代深化搜索效率高得多,因为它不会在生成过程中重新访问现有状态;它使用队列记住以前的状态,并使用这些状态生成连续的状态。 性能比较
代码
|
4
0
生成组合比排序花费的时间要长得多,而且对给定的100000个数字进行排序也不需要那么长的时间
|
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
Manny · 如何比较Perl中的字符串? 2 年前 |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |