【办公类-101-01】拍手围圈(1)——6个孩子(双数)围圈,两两拍手,求单独人数

每天早上做早操,有一个《上海童谣-小皮球》,需要围成圈的孩子们两人一组拍手。

可是每次都会有1-5位孩子是单独的,因为他左右两边的孩子都分别与他们另一边的孩子合作拍手了。

他们要么跑到圈的另外一边与另外单独的孩子拍手

要么就加入一组,变成3人对拍。

所以我想用Python算一下,出现单独1人、单独2人、单独3人的可能性是多少、

为了方便,我做6位孩子的圆圈。


# Python,如果有6个孩子围成一个圈,在同一时间里,每位孩子可以任意选择与左边或右边的孩子拥抱(只能选一个方向),如果这个孩子向左拥抱,就显示“左”,如果这个孩子向左拥抱,就显示“右”,请问有多少种排列方法,打印出来
def generate_arrangements(n, current, result):
    if n == 0:
        result.append(current[:])
        return
    # 选择向左拥抱
    current.append('1')
    generate_arrangements(n - 1, current, result)
    # 回溯
    current.pop()
    # 选择向右拥抱
    current.append('2')
    generate_arrangements(n - 1, current, result)
    # 回溯
    current.pop()

def print_all_arrangements():   
    # 人数
    num_children = 6
    result = []
    all=[]
    generate_arrangements(num_children, [], result)
    for arrangement in result:
        a=''.join(arrangement)
        print(''.join(arrangement))
        all.append(a)
    print(all)
    print(len(all))
    
  print_all_arrangements()

# 2的6次方 =64 种可能的排列方式。
# 2的8次方 =256.

    

['111111', '111112', '111121', '111122', '111211', '111212', '111221', '111222', '112111', '112112', '112121', '112122', '112211', '112212', '112221', '112222', '121111', '121112', '121121', '121122', '121211', '121212', '121221', '121222', '122111', '122112', '122121', '122122', '122211', '122212', '122221', '122222', '211111', '211112', '211121', '211122', '211211', '211212', '211221', '211222', '212111', '212112', '212121', '212122', '212211', '212212', '212221', '212222', '221111', '221112', '221121', '221122', '221211', '221212', '221221', '221222', '222111', '222112', '222121', '222122', '222211', '222212', '222221', '222222']
64

显示6位孩子随机出左手(1)和右手(2)的不同排序方式有64种,也就是2的6次方。

如果是111112,那么12为一组,剩下1111四个人可能1和2、3与4组合(0人空),也可能2和3组合(2人空),

我已经

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值