AT213 器物損壊!高橋君 题解

Doveqise

2019-03-07 17:03:08

Solution

啊 又是一道模拟题(AT好题)(入门必备233) 这道题也是只要按照题意写一下就好 见代码(代码较全) (dx dy 吹爆LRJ!) ```cpp #include<bits/stdc++.h> using namespace std; int h,w,a,b,v[505][505]; int dy[4]={0,0,1,-1},dx[4]={1,-1,0,0};//移动 bool flag; char m[505][505];//图 void dfs(int y,int x,int f){//dfs搜索 if(y<0||y>=h||x<0||x>=w||(v[y][x]&&f>=v[y][x]))return;//判断是否违法 if(m[y][x]=='g'){flag=1;return;}//到达终点 if(m[y][x]=='#'){if(f==3)return;f++;}//跨越障碍 v[y][x]=f;//记录步数 for(int i=0;i<4;i++) dfs(y+dy[i],x+dx[i],f);//扩展 } int main(){ scanf("%d%d",&h,&w); for(int i=0;i<h;i++){ scanf("\n");//再次万恶scanf读入空行 for(int j=0;j<w;j++){ scanf("%c",&m[i][j]);//读入图 if(m[i][j]=='s')a=i,b=j;//记录起点 } } dfs(a,b,1);//开始遍历 flag?puts("YES"):puts("NO");//判断是否有路径 } ```