组合不重复的3位数

编程要求

给出四个不同的数字,能够组成多少个不重复的3位数,按照从小到大的顺序输出,每行一个。

测试用例
测试输入

1 2 3 4

测试输出

123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 432

python解:

ls=input().split()
set=set()
#0 1 2 3
for i in range(4):
    if ls[i]!="0":
        str1=ls[i]+ls[(i+1)%len(ls)]+ls[(i+2)%len(ls)]
        set.add(str1)
        str2=ls[i]+ls[(i+1)%len(ls)]+ls[(i+3)%len(ls)]
        set.add(str2)
        str3=ls[i]+ls[(i+2)%len(ls)]+ls[(i+1)%len(ls)]
        set.add(str3)
        str4=ls[i]+ls[(i+2)%len(ls)]+ls[(i+3)%len(ls)]
        set.add(str4)
        str5=ls[i]+ls[(i+3)%len(ls)]+ls[(i+1)%len(ls)]
        set.add(str5)
        str6=ls[i]+ls[(i+3)%len(ls)]+ls[(i+2)%len(ls)]
        set.add(str6)

for num in sorted(map(int,set)):
    print(num)

运行结果: 

 组合不重复的3位数_第1张图片

你可能感兴趣的:(#,程序设计竞赛题,python,算法,数据结构)