Code:
#include <stdio.h>
// a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串。
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 ______________________________________ ; // 填空
}
int main()
{
printf("%d\n", f(1,1,1,2));
printf("%d\n", f(1,2,3,3));
return 0;
}
Solve:
首先要能看出这个功能的实现是一个递归
注意到函数入口有一个n,而且函数为有a,b,c,n的个数判断,这就说明空上的内容是一个求和的过程
结合递归的思想,a个A,b个B,c个C 字母能组成的长度为n的字符串个数不就是f(a-1,b,c,n-1) + f(a,b-1,c,n-1) + f(a,b,c-1,n-1) ,答案也就是这样.........
Result:
f(a-1,b,c,n-1) + f(a,b-1,c,n-1) + f(a,b,c-1,n-1)
最后附上蓝桥杯汇总链接:蓝桥杯C/C++A组省赛历年真题题解
声明:以个人刷题整理为目的,如若侵权,请联系删除~