萌新求助(ლ(′◉❥◉`ლ))
  • 板块灌水区
  • 楼主haimingbei
  • 当前回复9
  • 已保存回复9
  • 发布时间2024/8/13 22:28
  • 上次更新2024/8/13 22:45:58
查看原帖
萌新求助(ლ(′◉❥◉`ლ))
1235026
haimingbei楼主2024/8/13 22:28

题目传送门

不知道那出问题了,感觉思路很清晰啊?

代码:

using namespace std;
int n,m,mapp[160][160],hi,hj,ki,kj;
int px[9]={0,-1,-2,-2,-1,1,2,2,1};
int py[9]={0,-2,-1,1,2,2,1,-1,-2};
bool f[160][160];
struct point{
	int x,y;
};
queue <point> q;
void bfs(int ki,int kj){
	mapp[ki][kj]=0;
	f[ki][kj]=1;
	point a;
	a.x=ki,a.y=kj;
	q.push(a);
	int x,y;
	while(!q.empty()){
		x=q.front().x,y=q.front().y;
		q.pop();
		for(int i=1;i<=8;i++){
			int u=x+px[i],v=y+py[i];
			if(u>=1 && u<=n && v>=1 && v<=m && f[u][v]==0){
				mapp[u][v]=mapp[x][y]+1;
				f[u][v]=1;
				point b;
				b.x=u,b.y=v;
				q.push(b);
			}
		}
	} 
} 
int main(){
	char c;
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>c;
			if(c=='*')f[i][j]=1;
			else if(c=='K')ki=i,kj=j;
			else if(c=='H')hi=i,hj=j;
		}
	}
	bfs(ki,kj);
	cout<<mapp[hi][hj];
	return 0;
}

评测结果

2024/8/13 22:28
加载中...