下面的函数是一种递归方法,用于在给定约束下查找给定长度的字符串数。任何人都可以解释如何以清晰的方式计算时间复杂度。根据我的理解,在递归树的每一步中,节点的调用都不是2或3.因此上限为3 ^ n,即O(3 ^ n)?.
int countStr(string str, int n, int bCount, int cCount)
{
if (str.length() == n)
return 1;
int result = 0 ;
result += countStr(str+'a', n, bCount, 0);
if (bCount == 0)
result += countStr(str+'b', n, 1, 0);
if (cCount < 2)
result += countStr(str+'c', n, bCount, cCount+1);
return result ;
}
main()
{
int n = 3 ;
cout << countStr("", n, 0, 0) << endl;
return 0;
}