输入数字N,求全排列
最近遇到一个算法题,输入数字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()
运行结果: