|
发表于 2020-10-21 10:44:33
|
显示全部楼层
'''排列是一个物体的有序安排。例如 3124 是 1, 2, 3, 4 的一种排列。如果所有的排列按照数值或者字母序排序,我们称其为一个字典序。0, 1, 2 的字典排列有:
012 021 102 120 201 210
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 的第 100 万个字典排列是什么?'''
'''1. 以树状图分析,0到9 9个数字可以被分成10组,分别被视为由0到9为开头的字典排列
2. 排列的总数通过0到1到0到4的实验可推测为数字总数的集合值
3. 每一组的字典排列总量为排列总数的十分之一,因此可以推断第100万个字典排列的开头数字为2
4. 后面的每一位数字都可以用这个方式来推断'''
start = time.time()
position = 1000000 #要得到的字典排列位置
total = 10*9*8*7*6*5*4*3*2*1 #排列总数
group = 0 #数字组的排列量
location = 0 #数字推断后剩余的排列量
ininum = 0 #推断出来的数字
numbersequence = [0,1,2,3,4,5,6,7,8,9]
dictsort = []
while len(numbersequence) != 0:
group = total/len(numbersequence)
location = int(position % group)
ininum = int(position / group)
dictsort.append(numbersequence[ininum])
numbersequence.pop(ininum)
numbersequence.sort()
total = group
position = location
print(dictsort)
print("第1000000个字典排列是:")
print(dictsort)
end = time.time()
print("共用时:%f 秒" %(end-start))
[2]
[2, 7]
[2, 7, 8]
[2, 7, 8, 3]
[2, 7, 8, 3, 9]
[2, 7, 8, 3, 9, 1]
[2, 7, 8, 3, 9, 1, 5]
[2, 7, 8, 3, 9, 1, 5, 6]
[2, 7, 8, 3, 9, 1, 5, 6, 0]
[2, 7, 8, 3, 9, 1, 5, 6, 0, 4]
第1000000个字典排列是:
[2, 7, 8, 3, 9, 1, 5, 6, 0, 4]
共用时:0.000000 秒
看你们得到的结果都是2783915460
我一个一个打印出来了
不知道我这个哪里有问题 |
|