社区讨论

[求条] 90pt/80pt 玄关

P2802回家参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@miswhfzf
此快照首次捕获于
2025/12/05 21:28
2 个月前
此快照最后确认于
2025/12/07 16:00
2 个月前
查看原帖

88pt: 结果:第1个点MLE

CPP
#include <bits/stdc++.h>
using namespace std;
int a,b,c[10][10],d,e,vis[10][10],xx[4]={0,1,0,-1},yy[4]={1,0,-1,0};
struct stu{
    int x,y,s,h;
};
queue<stu>q;
int main(){
    cin>>a>>b;
    for(int i=1;i<=a;i++){
        for(int j=1;j<=b;j++){
            cin>>c[i][j];
            if(c[i][j]==0){
                vis[i][j]=1;
            }
            if(c[i][j]==2){
                d=i,e=j;
            }
        }
    }
    q.push({d,e,0,6});
    while(q.size()!=0){
        stu w=q.front();
        if(c[w.x][w.y]==3){
            cout<<w.s;
            return 0;
        }
        if(w.s>a*b){
            break;
        }
        for(int i=0;i<4;i++){
            int xn=xx[i]+w.x,yn=yy[i]+w.y;
            if(xn>0&&yn>0&&xn<=a&&yn<=b&&c[xn][yn]!=0&&w.h>1){
                int f=w.h-1;
                if(c[xn][yn]==4){
                    f=6;
                }
                q.push({xn,yn,w.s+1,f});
            }
        }
        q.pop();
    }
    cout<<-1;
    return 0;
}

加了vis数组:84pt 第10,12 WA

CPP
#include <bits/stdc++.h>
using namespace std;
int a,b,c[10][10],d,e,vis[10][10],xx[4]={0,1,0,-1},yy[4]={1,0,-1,0};
struct stu{
    int x,y,s,h;
};
queue<stu>q;
int main(){
    cin>>a>>b;
    for(int i=1;i<=a;i++){
        for(int j=1;j<=b;j++){
            cin>>c[i][j];
            if(c[i][j]==2){
                d=i,e=j;
            }
        }
    }
    q.push({d,e,0,6});
    while(q.size()!=0){
        stu w=q.front();
        if(c[w.x][w.y]==3){
            cout<<w.s;
            return 0;
        }
        for(int i=0;i<4;i++){
            int xn=xx[i]+w.x,yn=yy[i]+w.y;
            if(xn>0&&yn>0&&xn<=a&&yn<=b&&vis[xn][yn]==0&&c[xn][yn]!=0&&w.h>1){
                vis[xn][yn]=1;
                int f=w.h-1;
                if(c[xn][yn]==4){
                    f=6;
                }
                q.push({xn,yn,w.s+1,f});
            }
        }
        q.pop();
    }
    cout<<-1;
    return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...