最近遇到一个算法题,输入数字N,求N的全排列:
思路:很容易想到采用递归的思想,即N个数,只要前面N-1个数字已经生成的全排列,只用将N插入到这些排列中,生成新的排列顺序。
代码如下:
def sort_print(dataList, start, end):
if start >= end -1:
print dataList
else:
i = start
for index in range(start, end):
dataList[index], dataList[i] = dataList[i], dataList[index]
sort_print(dataList, start+1, end)
dataList[index], dataList[i] = dataList[i], dataList[index]
def main():
import sys
num = int(sys.stdin.readline().strip())
dataList = [item+1 for item in range(num)]
sort_print(dataList, 0, num)
if __name__ == '__main__':
main()
运行结果: