搜索WA了,疑似答案没有被更新
查看原帖
搜索WA了,疑似答案没有被更新
432183
JoeBiden2020楼主2021/9/15 13:01
#include<bits/stdc++.h>
using namespace std;
int f[305][305],minans=0x7fffffff,ex=0,ey=0,sx=0,sy=0,m,n;
void dfs(int x,int y,int ans){
    if(ans>minans){
        return;
    }
    if(x==ex&&y==ey){
        minans=min(ans,minans);
        return;
    }
    if(x>300||y>300){
        return;
    }
    if(f[x][y]==0||f[x][y]==3){
        return;
    }
    f[x][y]=3;
    if(f[x][y]==2){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(f[i][j]==2){
                    dfs(i,j,ans);
                }
            }
        }
    }
    dfs(x+1,y,ans+1);
    dfs(x-1,y,ans+1);
    dfs(x,y+1,ans+1);
    dfs(x,y-1,ans+1);
    f[x][y]=1;
    return;
}
int main(){
    memset(f,0,sizeof(f));
    char input;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>input;
            if(input=='#')
                f[i][j]=0;
            if(input=='.')
                f[i][j]=1;
            if(input=='W')
                f[i][j]=2;
            if(input=='='){
                ex=i;
                ey=j;
            }
            if(input=='@'){ 
                sx=i;
                sy=j;
            }
        }
    }
    dfs(sx,sy,0);
    cout<<minans;
    return 0;
}
2021/9/15 13:01
加载中...