比赛 CSP2023-J模拟赛 评测结果 ATTTTTTTTT
题目名称 复制题目 最终得分 10
用户昵称 心灵震荡 运行时间 9.000 s
代码语言 C++ 内存使用 5.64 MiB
提交时间 2023-10-18 19:54:59
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

const int N = 305;
int n, m, ans;
char a[N][N], v[N * N];
stack<int> l;

void dfs(int x, int y, int t)
{
	v[t] = a[x][y];
	if(x > n || y > m) return;
	int res = 0, flag = 1;
	stack<int> stk;
	for(int i = 1; i <= t; i++)
	{
		if(v[i] == '(') {stk.push(i); continue;}
		if(stk.empty()) {flag = 0; break;}
		res += i - stk.top(); stk.pop();
	}
	if(flag && stk.empty()) ans = max(ans, res);
	dfs(x + 1, y, t + 1);
	dfs(x, y + 1, t + 1);
	return;
}

int main()
{
	freopen("copy.in", "r", stdin);
	freopen("copy.out", "w", stdout);
	ios :: sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	cin >> n >> m;
	for(int i = 1; i <= n; i++) cin >> (a[i] + 1);
	for(int i = 1; i <= n; i++)
	for(int j = 1; j <= m; j++)
	{
		if(a[i][j] == '(') memset(v, 0, sizeof v), dfs(i, j, 1);
	}
		
	cout << ans;
	return 0;
}

/*
( ) ( ) (
( ( ) ) ) 
) ) ( ( )

((()))
*/