Python的一个小程序题

本文探讨了使用编程解决组合数学问题的方法,通过具体实例——构造由1、2、3、4组成的无重复数字的三位数——展示了如何利用循环和条件判断筛选出所有可能的组合。同时,对比了两种不同的实现方案,一种是简洁的三重循环法,另一种则是更为通用的适用于任意长度数字列表的算法。
摘要由CSDN通过智能技术生成

题目:有四个数字: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))             
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值