鱼C论坛

 找回密码
 立即注册
查看: 3266|回复: 14

[已解决]1,2,3,4能组成多少不重复的数呢?

[复制链接]
发表于 2022-5-31 21:37:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 XX牛牛 于 2022-6-12 13:58 编辑

如何1,2,3,4能组成多少个不重复的数呢?打印出来每个数
举个栗子:
1223、3334、1233这些是不合格的。
1234、4231、2314是合格的

求助中
最佳答案
2022-5-31 22:15:44
本帖最后由 健康的西西弗斯 于 2022-5-31 22:19 编辑

for i1 in range(1,5):
    for i2 in range(1,5):
        for i3 in range(1,5):
            for i4 in range(1,5):
                if i1!=i2 and i1!=i3 and i1!=i4 and i2!=i3 and i2!=i4 and i3!=i4:
                    print(i1,i2,i3,i4)
结果:
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1

a=[1,2,3,4]
for i1 in a:
    for i2 in a:
        for i3 in a:
            for i4 in a:
                if i1!=i2 and i1!=i3 and i1!=i4 and i2!=i3 and i2!=i4 and i3!=i4:
                    print(i1,i2,i3,i4)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-31 21:44:40 | 显示全部楼层
>>> from itertools import permutations
>>> len(list(permutations('1234')))
24
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-31 21:56:08 | 显示全部楼层
1在最高位组成:1234、1243、1324、1342、1423、1432,共6个四位数。
2、3、4在最高位也各组成6个四位数,一共有4x6=24个四位数,排列组合(摘抄自百度)楼上的是用python的库计算的,也很nb
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2022-5-31 22:15:44 | 显示全部楼层    本楼为最佳答案   
本帖最后由 健康的西西弗斯 于 2022-5-31 22:19 编辑

for i1 in range(1,5):
    for i2 in range(1,5):
        for i3 in range(1,5):
            for i4 in range(1,5):
                if i1!=i2 and i1!=i3 and i1!=i4 and i2!=i3 and i2!=i4 and i3!=i4:
                    print(i1,i2,i3,i4)
结果:
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1

a=[1,2,3,4]
for i1 in a:
    for i2 in a:
        for i3 in a:
            for i4 in a:
                if i1!=i2 and i1!=i3 and i1!=i4 and i2!=i3 and i2!=i4 and i3!=i4:
                    print(i1,i2,i3,i4)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-1 00:17:34 | 显示全部楼层
4*3*2*1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-1 00:22:19 | 显示全部楼层


排列组合问题,四个不同的数,你可以认为有四个位置,给四个元素进行选择

选第一个位置时,四个元素都有机会进行选择,那么此时就有 4 种情况

选第二个位置时,因为第一个位置有一个元素进行选择了,所以此时只剩 3 个元素进行选择第二个位置

同理可得,选第三个位置时,只有 2 个元素可供选择

选择第四个,也就是最后一个时,只剩一个位置了

那么最终答案为: 4*3*2*1 = 24 ,有 24 种情况

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-1 15:26:08 | 显示全部楼层
健康的西西弗斯 发表于 2022-5-31 22:15
for i1 in range(1,5):
    for i2 in range(1,5):
        for i3 in range(1,5):

我出这个问题就是不写if i1!=i2 and i1!=i3 and i1!=i4 and i2!=i3 and i2!=i4 and i3!=i4:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-1 15:28:08 | 显示全部楼层

啊这…………
再读一边题呗!~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-1 15:38:32 | 显示全部楼层
XX牛牛 发表于 2022-6-1 15:26
我出这个问题就是不写if i1!=i2 and i1!=i3 and i1!=i4 and i2!=i3 and i2!=i4 and i3!=i4:

a=4
b=1
while a!=0:
    b=a*b
    a=a-1
print(b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-1 15:45:49 From FishC Mobile | 显示全部楼层
XX牛牛 发表于 2022-6-1 15:28
啊这…………
再读一边题呗!~

有什么问题吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-1 16:35:36 | 显示全部楼层
XX牛牛 发表于 2022-6-1 15:26
我出这个问题就是不写if i1!=i2 and i1!=i3 and i1!=i4 and i2!=i3 and i2!=i4 and i3!=i4:

a=[]
for i1 in range(1,5):
    for i2 in range(1,5):
        for i3 in range(1,5):
            for i4 in range(1,5):
                a.append([i1,i2,i3,i4])



for i in range(len(a)-1,-1,-1):
    if len(set(a[i]))<4:
        a.remove(a[i])
print(len(a))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-1 18:49:29 | 显示全部楼层
isdkz 发表于 2022-6-1 15:45
有什么问题吗?

不是让你求几个,是让你打印出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-1 20:18:58 From FishC Mobile | 显示全部楼层
XX牛牛 发表于 2022-6-1 18:49
不是让你求几个,是让你打印出来

你那里不就是问几个吗?

你就不能自己改改?
from itertools import permutations
print('\n'.join(map(lambda x: ''.join(x), permutations('1234'))))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-6-1 21:39:54 | 显示全部楼层
a=[]
for i1 in range(1,5):
    for i2 in range(1,5):
        for i3 in range(1,5):
            for i4 in range(1,5):
                a.append([i1,i2,i3,i4])



for i in range(len(a)-1,-1,-1):
    if len(set(a[i]))<4:
        a.remove(a[i])
print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-8 19:51:19 | 显示全部楼层
就着题主的问题,如果是任意的4位数,比如,3,5,6,9 ,要得到每一位都不重复的4位数的所有组合,比如,3569,3659等,3566,5399不算,输出具体的组合如何实现呢?
求各位大大 的实现代码?
得到结果后如何验证呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 04:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表