问题描述:有ABC三个字母,给出每个字母的个数,问能得到多少个固定长度的串。
问题解析:这个问题很简单,使用递归,每一次可以选择ABC三个字母中的任意一个,前提是字母的个数不为0。当总长度为指定长度时,表示得到一中组合方案。
代码如下:
#include <iostream>
using namespace std;
static int number;
int dfs(int a,int b,int c,int n){
if(a<0||b<0||c<0) return 0;
if(n==0) return 1;
return dfs(a-1,b,c,n-1)+dfs(a,b-1,c,n-1)+dfs(a,b,c-1,n-1);
}
int main(void){
cout << dfs(1,1,1,2) << endl;
cout << dfs(1,2,3,3) << endl;
return 0;
}
原文:https://www.cnblogs.com/Alice-Fourier/p/12380564.html