| 
 | 
 
 
发表于 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 
我一个一个打印出来了 
不知道我这个哪里有问题 |   
 
 
 
 |