Python的一个小程序题

怎甘沉沦 提交于 2020-01-31 08:32:34

题目:有四个数字: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))             
        
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!