题目
问题描述
小蓝有黄绿蓝三种颜色的小球,分别为 R, G, B 个。同样颜色的小球没有区别。
小蓝将这些小球从左到右排成一排,排完后,将最左边的连续同色小球个数记为 t_1,
将接下来的连续小球个数记为 t_2,以此类推直到最右边的小球。
请问,总共有多少种摆放小球的方案,使得 t_1, t_2, … 为严格单调递增序列,即 t_1 < t_2 < t_3 < …
输入格式
输入一行包含三个整数 R, G, B。
输出格式
输出一个整数,表示答案。
样例输入
3 6 0
样例输出
3
样例说明
用 r 表示红球,g 表示绿球,可能的方案包括:
rrrgggggg 036
grrrggggg 135
ggrrrgggg 234
样例输入
2 4 6
样例输出
3
样例说明
用 r 表示红球,g 表示绿球,b 表示蓝球,可能的方案包括:
rrggggbbbbbb
grrgggbbbbbb
brrggggbbbbb
数据规模和约定
对于30%的评测用例,1 <= R, G, B <= 10;
对于60%的评测用例,1 <= R, G, B <= 30;
对于所有评测用例,1 <= R, G, B <= 50。
参考思路:
1.初步看题可知为枚举各种颜色小球的数量,来实现递增序列,故确定思路为dfs.
2.我们应该如何枚举小球呢?可以利用递增条件,记录上一次枚举的数量,下一次枚举需要大于这个数量。dfs(sum,x,last)表示在sum个球中,前面选了颜色为last色的,x个球。接着再选j个颜色为i的,那么剩下的球的选法和整体的选法相同,为dfs(sum-j,i,j)
3.递归边界为三数字的累加。剪枝一为:last表示,这个选的小球和上次选的小球相同,则跳过。剪枝二为每次枚举递增数量的小球。
#