代码求调(停止工作)
查看原帖
代码求调(停止工作)
580202
Siegerkranz_2735楼主2022/7/24 10:19

rt,用的bfs,while看了该封锁的封了,其他地方没有卡循环的可能,所以求调。谢谢

#include<bits/stdc++.h>
using namespace std;
struct node{
	int x,y;
	bool blk;
	int sum;
}start,a[400][400];
int n,m;
int p[8][2]={{1,-2},{2,-1},{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2}};
queue <node> q;
void find(node x){
	a[x.x][x.y].blk=1;
	q.push(x);
	while(!q.empty()){
		for(int i=0;i<8;i++){
			if(!a[q.front().x+p[i][0]][q.front().y+p[i][1]].blk){
				q.push(a[q.front().x+p[i][0]][q.front().y+p[i][1]]);
				a[q.front().x+p[i][0]][q.front().y+p[i][1]].sum=a[q.front().x][q.front().y].sum+1;
				a[q.front().x+p[i][0]][q.front().y+p[i][1]].blk=1;
			}
		}
		q.pop();
	}
}
int main(){
	cin>>n>>m>>start.x>>start.y;
	find(start);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<std::left<<setw(5)<<a[i][j].sum;
		}
		cout<<endl;
	}
	return 0;
}
2022/7/24 10:19
加载中...