水题一道
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 8, INF = 0x3f3f3f3f, eps = 1e-8;
int n;
char g[N][N];
bool st[N][N];
int dx[] = {0,1,0,-1}, dy[] = {1,0,-1,0};
int ans;
bool check(int x,int y)
{
return (x >= 0 && y >= 0 && x < n && y < n);
}
void dfs(int a,int b,int sum1, int sum2)
{
if(sum1 == sum2) ans = max(ans,sum1 + sum2);
for(int i = 0; i < 4; i ++)
{
int x = a + dx[i], y = b + dy[i];
if(check(x,y) && !st[x][y])
{
st[x][y] = 1;
if(g[x][y] == '(' && g[a][b] == '(')
{
sum1 ++;
dfs(x,y,sum1,sum2);
sum1 --;
}
else if(g[x][y] == ')')
{
sum2 ++;
dfs(x,y,sum1,sum2);
sum2 --;
}
st[x][y] = 0;
}
}
}
void work()
{
cin >> n;
for(int i = 0; i < n; i ++) cin >> g[i];
st[0][0] = 1;
if(g[0][0] == '(') dfs(0,0,1,0);
else
{
cout << 0 << endl;
return;
}
cout << ans << endl;
return;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
work();
return 0;
}