题目描述
小蓝有黄绿蓝三种颜色的小球,分别为R,G,B个。同样颜色的小球没有区别。小蓝将这些小球从左到右排成一排,排完后,将最左边的连续同色小球个数记为t1,将接下来的连续小球个数记为t2,以此类推直到最右边的小球。
请问,总共有多少总摆放小球的方案,使得t1, t2,...为严格单调递增序列,即t1 < = t2 <=t3 <= ...。
输入描述
输入一行包含三个整数R,G,B。
其中,0 <= R,G,B <=50。。
输出描述
输出—个整数,表示答案。
输入输出样例
示例1
输入:
3 6 0
输出:
3
样例说明
用r表示红球,g表示绿球,可能的方案包括:
rrrgggggg
grrrggggg
Ggrrrgggg
import java.util.Scanner;
public class Main {
static int[] a=new int[3];//存储各个颜色的小球数
static int count=0;//记录符合要求的排列的数量
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in=new Scanner(System.in);
int sum=0;
for(int i=0;i<3;i++) {
a[i]=in.nextInt();
sum+=a[i];
}
def(sum,0,-1);
//sum是所剩球的总数,0是上一个颜色球的个数,-1是上一个球的颜色
//0,1,2分别表示三种颜色;
System.out.println(count);
}
private static void def(int sum, int lastnum, int lastcolor) {
// TODO 自动生成的方法存根
if(sum==0) {
count++;
return;
}
for(int i=0;i<3;i++) {
if(i==lastcolor) {
continue;
}
for(int j=lastnum+1;j<=a[i];j++) {
a[i]-=j;
def(sum-j,j,i);
a[i]+=j;
}
}
}
}