比赛 |
CSP2023-J模拟赛 |
评测结果 |
ATTTTTTTTT |
题目名称 |
复制题目 |
最终得分 |
10 |
用户昵称 |
袁书杰 |
运行时间 |
9.000 s |
代码语言 |
C++ |
内存使用 |
5.92 MiB |
提交时间 |
2023-10-18 21:08:18 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=0;
char c[305][305];
struct node {
char a;
int pos;
};
int dx[5]= {1,0};
int dy[5]= {0,1};
void dfs(int x,int y,string string1) {
if(string1!="") {
int number=0;
stack<node>s;
int len=string1.size();
s.push(node {string1[0],1});
for(int i=1; i<len; i++) {
if(s.empty()) {
s.push(node {string1[i],i+1});
continue;
}
char c1=s.top().a;
if(string1[i]==')'&&c1=='(') {
number+=((i+1)-s.top().pos);
s.pop();
} else {
s.push(node {string1[i],i+1});
}
}
if(s.empty()) {
ans=max(ans,number);
}
for(int i=0; i<=1; i++) {
int nx=dx[i]+x;
int ny=dy[i]+y;
if(nx>=1&&nx<=n&&ny>=1&&ny<=m) {
dfs(nx,ny,string1+c[nx][ny]);
}
}
}
}
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++) {
for(int j=1; j<=m; j++) {
cin>>c[i][j];
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
if(c[i][j]==')') {
continue;
}
dfs(i,j,"(");
}
}
cout<<ans;
return 0;
}