问题:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
分析:排列A(4,3)=4!/(4-3)!=4!/1!=4!=A(4,4),用变进制数解决。
# 用于python3
if 'reduce' not in dir(__builtins__):
from functools import reduce
l = [1,2,3,4]
for i in range(reduce(lambda x,y:x*y,range(1,len(l)+1))):
s=''
k=i
l0=l[::]
for j in range(len(l),0,-1):
m=k%j
#print( 'i=%d,j=%d,k=%d,m=%d,l0=%a,s="%s"'%(i,j,k,m,l0,s) )
s=s+str(l0.pop(m))
k=k-m
print( s[:-1] )