蓝桥杯--字母组串

问题描述:有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;
}

猜你喜欢

转载自www.cnblogs.com/Alice-Fourier/p/12380564.html