求求大佬告诉我为什么用了vis数组连样例都不能过,输出的是0
查看原帖
求求大佬告诉我为什么用了vis数组连样例都不能过,输出的是0
1144743
pku_lmc楼主2024/5/7 00:38
#include <iostream>
using namespace std;
int r2, c2, r1, c1;
int n, m;
char p[105][105];
bool vis[105][105];
int dx[4] = {1,0,-1,0};
int dy[4] = {0,1,0,-1};
int T, num = 0;
void dfs(int x, int y, int time)
{
    if(x<0||y<0||x>=n||y>=m) return;
    \\if(vis[x][y]) return;
    \\vis[x][y] = 1;
    if(time > T) return;
    if(x == r2&&y == c2) {num++;return;}
    for(int i = 0; i < 4; i++){
        int nx = x + dx[i];
        int ny = y + dy[i];
        if(p[nx][ny] == '.') dfs(nx, ny, time+1);
    }
    \\vis[x][y] = 0;
}
int main(){
    cin >> n >> m >> T;
    for(int i = 0; i<n; i++)
        for(int j = 0; j<m; j++)//注意循环始末点
            cin >> p[i][j];
    cin >> r1 >> c1 >> r2 >> c2;
    r2--;c2--;
    dfs(r1-1,c1-1,0);
    cout << num;
}

2024/5/7 00:38
加载中...