题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
菜鸟驿站里面给出的程序非常言简意赅,简便通俗易懂:
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if( i != k ) and (i != j) and (j != k):
print i,j,k
我同样也写了一个程序,不过相较于上面的程序我的程序略显复杂了,
不过有一个好处是这个程序不光可以得出题目中给定的包含四个树的列表,还可以求解n个数的列表:
a=[1,2,3,4]
c=[0,0,0,0,0,0]
sum=0
for i in range(0,len(a)-2):
if len(a)>=3:#这个判断语句完全可以删去,因为for循环语句里面已经限制了len(a)必须大于等于三。
b=a[i]
for j in range(i+1,len(a)-1):
for h in range(j+1,len(a)):
sum+=6
c[0]=b*100+a[j]*10+a[h]
c[1]=b*100+a[h]*10+a[j]
c[2]=a[j]*100+b*10+a[h]
c[3]=a[j]*100+a[h]*10+b
c[4]=a[h]*100+b*10+a[j]
c[5]=a[h]*100+a[j]*10+b
for k in range(6):
print(c[k])
print('%d'%(sum))