10 条题解

  • 0
    @ 2025-3-24 16:47:14
    #include <iostream>
    using namespace std;
    
    int a[20][20];
    int n, m, qx, qy, zx, zy;
    int dx[] = {0, -1, 0, 1};
    int dy[] = {-1, 0, 1, 0};
    
    int rec[410][2];
    int cnt = 0;
    
    void dfs(int x, int y, int k) {
        rec[k][0] = x;
        rec[k][1] = y;
    
        if (x == zx && y == zy) {
            cnt++;
            for (int i = 1; i < k; i++) {
                printf("(%d,%d)->", rec[i][0], rec[i][1]);
            }
            printf("(%d,%d)", rec[k][0],rec[k][1]);
            return;
        }
    
        for (int i = 0; i < 4; i++) {
            int nx = x + dx[i];
            int ny = y + dy[i];
            if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && a[nx][ny] == 1) {
                a[nx][ny] = 0;
                dfs(nx, ny, k + 1);
                a[nx][ny] = 1;
            }
        }
    }
    
    int main() {
        cin >> n >> m;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                cin >> a[i][j];
            }
        }
        cin >> qx >> qy;
        cin >> zx >> zy;
    
        a[qx][qy] = 0;
        dfs(qx, qy, 1);
    
        if (cnt == 0) return -1;
    }
    

    信息

    ID
    84
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    1459
    已通过
    224
    上传者