package 蓝桥杯题目;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class 排列小球 {
//由于下面生成的str数据可能重复,所以我们将其放入set去重,最后只需要输出set集合的size就是答案了
static Set set=new HashSet();
static char[] str;
static int R,G,B; //R,G,B分别表示红绿蓝球的数量
//n表示前一层小球个数,str是用来储存小球的数组,cur是str数组的当前的下标
public static void dfs(int R,int G,int B,int n,char[] str,int cur) {
if(R==0&&G==0&&B==0) {
String STR=new String(str);
set.add(STR);
return ;
}
for(int i=0;i<3;i++) { //第一层用来选择球的颜色
int t = 0; //t表示当前选的什么颜色的球的个数(当前剩下的个数)
if(i==0) t=R;
if(i==1) t=G;
if(i==2) t=B;
for(int j=1;j<=t;j++) { //第二层用来选择放多少个(j表示当前选取的个数)
if(j>n) {
if(i==0) R-=j;
if(i==1) G-=j;
if(i==2) B-=j;
//这里我们将选择了颜色的j个球全部放入str数组中
for(int q=0;q