1 条题解

  • 3
    @ 2026-7-26 14:57:43

    我是题解

    #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
上传者