题目描述
由 A,B,C 这3个字母就可以组成许多串。 比如:”A”,”AB”,”ABC”,”ABA”,”AACBB” …。现在,小明正在思考一个问题: 如果每个字母的个数有限定,能组成多少个已知长度的串呢?
输入描述:
四个整数a,b,c,n(0 ≤ a, b, c, n ≤ 10),空格分隔,分别表示a个A,b个B,c个C 字母,长度为n的串。
输出描述:
一个整数,能组成多少个不同长度为n的串。
示例1
输入
1 1 1 2
输出
6
#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;
}