求全排列的算法不是用递归么?老师就是这样教的,不复杂嘛,刚才网上还找到一个算法
用两个数组,一个数组存放当前结果,第二个数组是每一个数是否已经使用的标志。比如对10个数进
行全排列,第一个结果是:0 1 2 3 4 5 6 7 8 9。
然后把每一个数的使用标志均置为1。
然后开始主循环:
先打印当前的结果。
在前一个得到的结果中,从后往前找第一个由小到大排列的数。每找一次均置当前位上的数字的使用标志
为0,然后找第一个比这个数大但是没有使用过的数。
比如前一个结果是:4 1 9 7 8 2 5 0 6 3,那么从后往前第一个由小到大排列的数是0,第一个比0大但是没有
使用过的数是3(因为比0大的数字里只有6和3)。最后由小到大依次打印剩余没有使用过的数字。所以下一个
结果是4 1 9 7 8 2 5 3 0 6。
不定层的循环用不定个FOR是实现不了的吧?