#include<iostream>#include<cstring>#include<algorithm>usingnamespace std;constint N =10;char g[N][N];bool st[N][N];int dx[4]={-1,0,1,0}, dy[4]={0,1,0,-1};int ans;int n;voiddfs(int x,int y,int l,int r){
st[x][y]=true;if(l == r){
ans =max(ans, l + r);
st[x][y]=false;return;}for(int i =0; i <4; i ++){int a = x + dx[i], b = y + dy[i];if(a >=0&& b >=0&& a < n && b < n &&!st[a][b]){if(g[x][y]==')'&& g[a][b]=='(')continue;if(g[a][b]=='(')dfs(a, b, l +1, r);elsedfs(a, b, l, r +1);}}
st[x][y]=false;}intmain(){
cin >> n;for(int i =0; i < n; i ++) cin >> g[i];if(g[0][0]!=')')//只有当起点是(时才可以搜索。{dfs(0,0,1,0);}
cout << ans;return0;}
总结:
1.暴力搜索 时间复杂度差不多即可 不用怎么分析。
2.读入一个字符数组 g[N][N]
for(int i = 0; i < n; i++) cin >> g[i];