有红、黄、绿三种颜色的球,
其中红球3个,黄球3个,绿球6个。
现将这12个球混放在一个盒子中,
从中任意摸出8个球,
编程计算摸出球的各种颜色搭配。
#include<bits/stdc++.h>
using namespace std;
int a[15]={0,0,0,1,1,1,2,2,2,2,2,2}; // 0 红球, 1 黄球 2绿球
string name[3]={"红","黄","绿"};
map<string,bool> m;
bool b[15];
void dfs(int id,int k){
if(id>=12||k>=8){
if(k==8){
string s = "";
for(int i = 0;i <12;i++){
if(b[i]){
s += name[a[i]];
}
}
if(!m[s]){
cout<<s<<endl;
m[s] = true;
}
}
}else{
b[id]=0;
dfs(id+1,k);
b[id]=1;
dfs(id+1,k+1);
b[id]=0;
}
}
int main(){
ios::sync_with_stdio(0);
dfs(0,0);
return 0;
}