小蓝有黄绿蓝三种颜色的小球,分别为 R,G,B个。同样颜色的小球没有区别。小蓝将这些小球从左到右排成一排,排完后,将最左边的连续同色小球个数记为 t1,将接下来的连续小球个数记为 t2,以此类推直到最右边的小球。请问,总共有多少总摆放小球的方案,使得 t1,t2,⋯为严格单调递增序列,即 t1≤t2≤t3。
输入描述
输入一行包含三个整数 R,G,B。
其中,0≤R,G,B≤50。
输出描述
输出一个整数,表示答案。
输入输出样例
示例 1
输入
3 6 0
输出
3

PythonRGB红黄蓝小球排列问题 求解
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 陈.py 2022-02-09 10:42关注
import itertools # count用于对符合要求的组合计数 count = 0 num = [int(i) for i in input().split(' ')] # 生成对应的所有小球列表 def set_list(num): ball_list = [] for i in range(num[0]): ball_list.append('R') for i in range(num[1]): ball_list.append('G') for i in range(num[2]): ball_list.append('B') return ball_list # 枚举所有小球的排列情况 combination = [list(i) for i in list(set(itertools.permutations(set_list(num), sum(num))))] # 遍历所有情况,判断是否符合递增要求 for i in combination: l = [len(list(v)) for k, v in itertools.groupby(i)] if all(x < y for x, y in zip(l, l[1:])): count += 1 print(count)
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报