萌新求助,不会bfs,dfs只有10分
查看原帖
萌新求助,不会bfs,dfs只有10分
1124975
PleasantSheep楼主2024/2/27 19:43
using namespace std;
int maze[105][105]={0};
int n, m;
int ans = 0;
int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1};
void dfs(int x,int y)
{
    if(x==n&&y==m)
    {
        ans++;
    }
    for (int i = 0; i < 4;i++)
    {
        if(maze[x+dx[i]][y+dy[i]]==1)
        {
            maze[x + dx[i]][y + dy[i]] = 0;
            dfs(x + dx[i], y + dy[i]);
            maze[x + dx[i]][y + dy[i]] = 1;
        }
    }
}
int main()
{
    cin >> n >> m;
    char z;
    for (int i = 1; i <= n;i++)
    {
        for (int j = 1; j <= m;j++)
        {
            cin >> z;
            if(z=='.')
                maze[i][j] = 1;
            else
                maze[i][j] = 0;
        }
    }
    dfs(1, 1);
    if(ans>=1)
        cout << "Yes";
    else
        cout << "No";
    return 0;
}
2024/2/27 19:43
加载中...