1 条题解
-
3
我是题解
#include<bits/stdc++.h> using namespace std; int n,m,sx,sy; char a[1145][1145]; struct sans{ int x,y,n; }; int dx[]{0,1,1,-1,-1,2,2,-2,-2}; int dy[]{0,2,-2,2,-2,1,-1,1,-1}; void sanb(int j,int k){ queue<sans> q; q.push((sans){j,k,0}); a[j][k]='*'; while(!q.empty()){ sans h=q.front(); q.pop(); for(int i=1;i<=8;i++){ int nx=h.x+dx[i]; int ny=h.y+dy[i]; if(a[nx][ny]=='H'){ cout<<h.n+1; return; } if(nx>0&&ny>0&&nx<=n&&ny<=m&&a[nx][ny]!='*'){ q.push((sans){nx,ny,h.n+1}); a[nx][ny]='*'; } } } cout<<-1; return; } int main(){ cin>>m>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]=='K'){ sx=i;sy=j; } } } sanb(sx,sy); }
- 1
信息
- ID
- 198
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 3
- 已通过
- 2
- 上传者