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

int n, m, Max = 0;

char a[305][305];

inline void dfs(int x, int y, int l, int r, int cnt, int step)
{
    if(a[x][y] == '(')
    {
        l++;
        cnt -= step;
    }
    else
    {
       r++;
       cnt += step; 
    } 
    if(l == r)
        Max = max(Max,cnt);
    if(x+1 <= n)
    {
        if(a[x+1][y] == '(')
            dfs(x+1,y,l,r,cnt,step+1);
        else
        {
            if(r < l)
                dfs(x+1,y,l,r,cnt,step+1);
        }
    }
    if(y+1 <= m)
    {
        if(a[x][y+1] == '(')
            dfs(x,y+1,l,r,cnt,step+1);
        else
        {
            if(r < l)
                dfs(x,y+1,l,r,cnt,step+1);
        }
    }
}
   
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 >> a[i][j];
    
    for(int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            dfs(i,j,0,0,0,1);
    
    cout << Max;
        	
   	return 0;
}