39分求助
查看原帖
39分求助
1045201
shortintlonglong楼主2023/12/24 10:38
#include <iostream>
using namespace std;

const int N = 55;
char a[N][N];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i ++) {
        for (int j = 1; j <= m; j ++) {
            cin >> a[i][j];
        }
    }
    int res = -1e9;
    for (int i = 1; i <= n; i ++) {
        for (int j = 1; j <= m; j ++) {
            if (a[i][j] != '+') continue;
            int max_x = min(min(i, n - i), min(j, m - j)) - 1;
            int y = -1e9;
            for (int x = 1; x <= max_x; x ++) {
                bool flag = true;
                for (int I = i - x; I <= i - 1; I ++) {
                    if (a[I][j] != '|') {
                        flag = false;
                        break;
                    }
                }
                if (!flag) break;
                for (int I = i + 1; I <= i + x; I ++) {
                    if (a[I][j] != '|') {
                        flag = false;
                        break;
                    }
                }
                if (!flag) break;
                for (int J = j - x; J <= j - 1; J ++) {
                    if (a[i][J] != '-') {
                        flag = false;
                        break;
                    }
                }
                if (!flag) break;
                for (int J = j + 1; J <= j + x; J++) {
                    if (a[i][J] != '-') {
                        flag = false;
                        break;
                    }
                }
                if (!flag) break;
                for (int I = i - x, J = j - x; I <= i + x && J <= j + x; I ++, J ++) {
                    if (a[I][J] == '\\' || (i == I && j == J)) {
                    	
					} else {
                        flag = false;
                        break;
                    }
                }
                if (!flag)  break;
                for (int I = i - x, J = j + x; I <= i + x && J >= j - x; I ++, J --) {
                    if (a[I][J] == '/' || (i == I && j == J)) {
                    	
					} else {
                        flag = false;
                        break;
                    }
                }
                if (!flag) break;
				else y = max(x, y);
            }
            res = max(res, y);
        }
    }
    if (res > -1e9) cout << res << endl;
    else cout << 0 << endl;
    return 0;
}
2023/12/24 10:38
加载中...