#1401. 复杂度判断
复杂度判断
题目描述
再过一个月翁老师准备给大家讲解算法复杂度(也可称为时间复杂度)的计算,并布置了作业题。翁老师在一个程序中写了很多个 for
循环,每一个 for
循环都是形如 for(int i = 1; i <= n; i++)
,且中间没有 continue
,break
等影响循环执行的语句,即每一个 for
都会运行 轮(注意,并不是每一个循环里面定义的变量都叫 ,但是这个循环变量一定是从 到 ,执行 次)。现在翁老师想知道,他写的这个程序的算法复杂度是 的几次方。
在本题中,你可以将“算法复杂度”理解为 for
循环 最多嵌套 的层数。
例如在这份代码中,第一个循环嵌套有 层,第二个循环嵌套有 层,因此最多的嵌套层数为 ,所以该程序的时间复杂度为 你只需要输出 即可。
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
for (int k = 1; k <= n; k++)
{
}
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
}
}
输入描述
输入一个长度为 的字符串,字符串的内容只可能是 或者 ,且 和 的数量相等。 代表一个 for
循环的开始, 代表一个 for
循环的结束。保证字符串合法。
输出描述
输出一行一个整数代表这个程序的算法复杂度是 的多少次方。
001101
2
010101
1
样例 解释
样例 中,最多有两层循环嵌套,即 0011
,所以算法复杂度是 ,所以输出 。
将样例 转化为代码即为,最多的循环嵌套层数为 ,所以输出 。
for (int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
}
}
for (int i = 1; i <= n; i++)
{
}
样例 中,最多有一层循环嵌套,所以输出 。
数据范围
对于 的数据,有
对于 的数据范围,有