题解:蓝桥云课 4124 分糖果

【题目来源】

蓝桥云课:1.分糖果 - 蓝桥云课

【题目描述】

两种糖果分别有9个和16个,要全部分给7个小朋友,每个小朋友得到的糖果总数最少为2个最多为5个,问有多少种不同的分法。糖果必须全部分完。

只要有其中一个小朋友在两种方案中分到的糖果不完全相同,这两种方案就算作不同的方案。

【代码详解】

#ans表示方案数
ans = 0
def dfs(depth, n, m):
    #depth:第几个小朋友
    #n:第一种糖果剩余量
    #m:第二种糖果剩余量

    #当分完所有小朋友后保证手上没有糖果
    if depth == 7:
        if n == 0 and m == 0:
            global ans
            ans += 1
            # print(ans)
        return
    #枚举当前小朋友的糖果可能性
    #枚举第一种糖果
    for i in range(0, 6):
        #枚举第二种糖果
        for j in range(0, 6):
            #第depth个小朋友有i个第一种,j个第二种
            if 2<=i+j<=5 and i<=n and j<=m:
                dfs(depth+1, n-i, m-j)
dfs(0, 9, 16)
print(ans)

【运行结果】

5067671
posted @ 2026-03-04 15:15  团爸讲算法  阅读(1)  评论(0)    收藏  举报