//AABBBC取3个有哪些取法 #include<iostream> #include<string> using namespace std; int num=0; //k是当前处理的数组下标 //goal:还剩几个名额 void f(int data[],int x[],int k,int goal) { int i; if(k<=3&&goal==0) { for(i=0;i<k;i++) { cout<<x[i]<<' '; } for(i=k;i<3;i++) { cout<<0<<' '; } cout<<endl; return ; } if(k>2)return; for(i=0;i<=data[k];i++) { x[k]=i; f(data,x,k+1,goal-i); } } int main() { int data[3]={2,3,1}; int x[3];//每个元素取几个 f(data,x,0,3); return 0; }