#1401. 复杂度判断

复杂度判断

题目描述

再过一个月翁老师准备给大家讲解算法复杂度(也可称为时间复杂度)的计算,并布置了作业题。翁老师在一个程序中写了很多个 for 循环,每一个 for 循环都是形如 for(int i = 1; i <= n; i++) ,且中间没有 continuebreak 等影响循环执行的语句,即每一个 for 都会运行 nn 轮(注意,并不是每一个循环里面定义的变量都叫 ii,但是这个循环变量一定是从 11nn,执行 nn 次)。现在翁老师想知道,他写的这个程序的算法复杂度是 nn 的几次方。

在本题中,你可以将“算法复杂度”理解为 for 循环 最多嵌套 的层数。

例如在这份代码中,第一个循环嵌套有 33 层,第二个循环嵌套有 22 层,因此最多的嵌套层数为 33,所以该程序的时间复杂度为 n3n^3 你只需要输出 33 即可。

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++)
    {
        
    }
}

输入描述

输入一个长度为 2n2*n 的字符串,字符串的内容只可能是 00 或者 11,且 0011 的数量相等。00 代表一个 for 循环的开始,11 代表一个 for 循环的结束。保证字符串合法。

输出描述

输出一行一个整数代表这个程序的算法复杂度是 nn 的多少次方。

001101
2
010101
1

样例 11 解释

样例 11 中,最多有两层循环嵌套,即 0011,所以算法复杂度是 n2n^2,所以输出 22

将样例 11 转化为代码即为,最多的循环嵌套层数为 22,所以输出 22

for (int i = 1; i <= n; i++)
{
	for(int j = 1; j <= n; j++)
	{
	
	}
}
for (int i = 1; i <= n; i++)
{

}

样例 22 中,最多有一层循环嵌套,所以输出 11

数据范围

对于 40%40\% 的数据,有 1n101\leq n \leq 10

对于 100%100\% 的数据范围,有 1n1051 \leq n \leq 10^5