c++,迷惑的事情

B3625 迷宫寻路

l_x_y_ @ 2023-07-19 16:44:38

include<bits/stdc++.h>
using namespace std;
int n,m;
char a[110][110];
bool vis[110][110];
int fx[4]={1,0,-1,0};
int fy[4]={0,1,0,-1};
struct A{
    int x,y;
};
queue<A> q;
int sx,sy;
bool t=0;
int main()
{
    sx=sy=0;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    memset(a,2147483647,sizeof(a)); 
    A Tmp;
    Tmp.x=sx,Tmp.y=sy;
    q.push(Tmp),a[sx][sy]=0;
    while(!q.empty()){
        A now=q.front();
        q.pop();
        for(int i=0;i<4;i++){
            int nx=now.x+fx[i],ny=now.y+fy[i];
            if(nx<1||nx>n||ny<1||ny>m||vis[nx][ny]||a[nx][ny]=='#') continue;
            Tmp.x=nx,Tmp.y=ny,q.push(Tmp);
            if(a[nx][ny]==a[n][m]){
                cout<<"Yes";
                t=1;
                return 0;
            }
        }        
    }
    if(t==0){
        cout<<"No";
    }
    return 0;
}

这样对的是#1#6#8#10

#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[110][110];
bool vis[110][110];
int fx[4]={1,0,-1,0};
int fy[4]={0,1,0,-1};
struct A{
    int x,y;
};
queue<A> q;
int sx,sy;
bool t=0;
int main()
{
    sx=sy=0;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    memset(a,2147483647,sizeof(a)); 
    A Tmp;
    Tmp.x=sx,Tmp.y=sy;
    q.push(Tmp),a[sx][sy]=0;
    while(!q.empty()){
        A now=q.front();
        q.pop();
        for(int i=0;i<4;i++){
            int nx=now.x+fx[i],ny=now.y+fy[i];
            if(nx<0||nx>n||ny<0||ny>m||vis[nx][ny]||a[nx][ny]=='#') continue;
            Tmp.x=nx,Tmp.y=ny,q.push(Tmp);
            if(a[nx][ny]==a[n][m]){
                cout<<"Yes";
                t=1;
                return 0;
            }
        }        
    }
    if(t==0){
        cout<<"No";
    }
    return 0;
}

这样错的是#1#6#8#10


by l_x_y_ @ 2023-07-19 16:46:00

区别是 第一版:

if(nx<1||nx>n||ny<1||ny>m||vis[nx][ny]||a[nx][ny]=='#') continue;

第二版:


if(nx<0||nx>n||ny<0||ny>m||vis[nx][ny]||a[nx][ny]=='#') continue;

by zcy_jake @ 2023-08-21 10:31:49

这是很正常的事情。

又遇到一位大佬


by Ryzen_9_7950X @ 2023-09-30 10:12:46

看样子是:第一段代码只输出N哦,第二段代码只输出Yes[doge]


|