递归其实体现了一种divide-and-conquer (
化整为零,逐个击破)的解决问题的思想, 所以在多数情况下,算法效率都是最优的之一。
在这个问题上,最直觉的递归算法,时间复杂度为 O(N!)
你可以算算你的算法的时间复杂度, main 里面的那个while循环应该有N!次,而每次while循环调用的next_permutation的函数复杂度为 2N ,乘起来应该有 2N * N! 的时间复杂度。
引用:
Originally posted by psbeyond at 2005-10-28 22:34:
用递归效率应该是最低的了吧?