我有这段代码,
void Generate(List<string> comb, string prefix, string remaining)
{
int currentDigit = Int32.Parse(remaining.Substring(0, 1));
if (remaining.Length == 1)
{
for (int i = 0; i < dictionary[currentDigit].Length; i++)
{
comb.Add(prefix + dictionary[currentDigit][i]);
}
}
else
{
for (int i = 0; i < dictionary[currentDigit].Length; i++)
{
Generate(comb, prefix + dictionary[currentDigit][i], remaining.Substring(1));
}
}
}
上述代码的时间复杂度是多少?
生成是否为O(n)并且本身正在执行n次,所以O(n ^ 2)?
字典是len = 10并且电话键盘存储在其中.2 =“abc”等
对此代码的初始调用将类似于
生成(新列表(),“”,“12345”);
感谢。
答案 0 :(得分:1)
假设字典大小为m
,输入字符串大小为n
(剩余),这将是:
T(1) = m + constant;
T(n) = m T(n-1) + O(n) ==> T(n) = O(m^n)
事实上,在else
部分的每次运行中,你将运行m次,O(n)的函数。