题目:
由 A,B,C 这3个字母就可以组成许多串。
比如:“A”,“AB”,“ABC”,“ABA”,“AACBB” …
现在,小明正在思考一个问题:
如果每个字母的个数有限定,能组成多少个已知长度的串呢?
输入:
a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串。
输出一个数表示结果
解题思路:
因为有a个A,b个B,c个C, 组成长度为n的串。每次消耗一个,可能消耗A,B,C中的任何一个
所以递归时 用三种情况之和。
当前位置的种数=用了a的种数+用了b的种数+用了c的种数。
测试:
我们用1个a,0个b,0个c组成长度为1的串,根据代码,结果为1。
代码如下:
#include <iostream>
using namespace std;int f(int a, int b, int c, int n) {if (a < 0 || b < 0 || c < 0)return 0;if (n == 0)return 1;return f(a - 1, b, c, n - 1) + f(a, b - 1, c, n - 1) + f(a, b, c - 1, n - 1);
}int main() {int a, b, c, n;cin >> a >> b >> c >> n;cout << f(a, b, c, n) << endl;return 0;
}