#P1435. [递归入门]取球2
[递归入门]取球2
Description
现有6个球,2个A,3个B,1个C。
现在要从这6个球中取N个球,有几种取法?
例如,取3个球的取法有6种:
BBC
BBB
ABC
ABB
AAC
AAB
Input Format
N(1<=N<=6)
Output Format
可能的取法
3
6
Hint
#include <iostream>
using namespace std;
int ans=0;
int a[3] = {2,3,1};
int b[3];
void f(int cur,int left){//cur当前考虑的位置,goal:距离?标的余额
if(cur == sizeof(b)/sizeof(int)){
if(!left)
ans += 1;
return;
}
for(int i=0;i<=min(left,a[cur]);i++){
b[cur] = i;
f(cur+1,left-i);
}
b[cur] = 0;//回溯
}
int main(){
int N;
cin>>N;
f(0,N);
cout<< ans;
return 0;
}
Source
递归