传送门

 

非常傻的DP。

f[i]表示末尾是i的最长的字串

 

#include <cstdio>
#include <cstring>
#define N 1000001

int f[N];
char s[N];
int n, p, ans;

int main()
{
	int i;
	scanf("%s", s + 1);
	n = strlen(s + 1);
	for(i = 1; i <= n; i++)
	{
		if((s[i - 1 - f[i - 1]] == '(' && s[i] == ')') || (s[i - 1 - f[i - 1]] == '[' && s[i] == ']'))
		{
			f[i] = f[i - 1] + 2;
			f[i] += f[i - f[i]];
		}
		if(ans < f[i]) ans = f[i], p = i;
	}
	for(i = p - f[p] + 1; i <= p; i++) printf("%c", s[i]);
	return 0;
}

  

相关文章:

  • 2021-06-04
  • 2022-01-10
  • 2021-12-29
  • 2022-12-23
  • 2021-10-28
  • 2021-06-27
  • 2021-10-23
  • 2018-10-03
猜你喜欢
  • 2022-01-09
  • 2021-11-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2018-02-24
  • 2021-11-13
相关资源
相似解决方案