求助,超时
  • 板块学术版
  • 楼主__Cby___
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/7/19 14:46
  • 上次更新2023/11/3 08:53:53
查看原帖
求助,超时
734049
__Cby___楼主2023/7/19 14:46

http://noi.openjudge.cn/ch0205/1792/ 时间超时



#include <iostream>
using namespace std;
char a[105][105];
int dh[4] = { 1,-1,0,0 };
int dl[4] = {0, 0, -1, 1};
int b[105][105]={0};
int now_h, now_l, end_h, end_l,d;
bool r = 0;
int dfs(int nh,int nl) {
    b[nh][nl] = 1;
    if (nh==end_h&&nl==end_l) {
        cout << "YES" << endl;
        r = 1;
        return 0;
    }
    for (int i = 0; i < 4; i++) {
        if(nh+dh[i]>=0&&nh+dh[i]<=d&&nl+dl[i]>=0&&nl+dl[i]<=d&&!b[nh+dh[i]][nl+dl[i]]&&a[nh+dh[i]][nl+dl[i]]=='.') {
            if (r) {
                return 0;
            }
            dfs(nh + dh[i], nl + dl[i]);
        }
    }
    b[nh][nl] = 0;
    return 0;
}
int main() {
    int n;
    cin >> n;
    while (n--) {
        cin >> d;
        for (int i = 0; i < d; i++) {
            for (int j = 0; j < d; j++) {
                b[i][j] = 0;
            }
        }
        for (int i = 0; i < d; i++) {
            for (int j = 0; j < d; j++) {
                cin >> a[i][j];
            }
        }
        cin >> now_h >> now_l >> end_h >> end_l;
        dfs(now_h,now_l);
        if (r == 0) {
            cout << "NO" << endl;
        }
        r = 0;
    }
    return 0;
}
2023/7/19 14:46
加载中...