BFS算法
题目解题思路代码#include iostream #include queue #include cstring using namespace std; typedef pairint,int PII; const int N410; int n,m,x,y; int dist[N][N]; // 骑士8个移动方向 int dx[]{1,2,2,1,-1,-2,-2,-1}; int dy[]{2,1,-1,-2,-2,-1,1,2}; void bfs() { memset(dist,-1,sizeof(dist)); // 初始化距离为-1 queuePII q; q.push({x,y}); dist[x][y]0; // 起点距离为0 while(q.size()) { auto tq.front(); q.pop(); int it.first,jt.second; for(int k0;k8;k) { int nxidx[k],nyjdy[k]; // 检查是否在棋盘范围内且未被访问过 if(nx1nxnny1nymdist[nx][ny]-1) { dist[nx][ny]dist[i][j]1; // 更新距离 q.push({nx,ny}); } } } } int main() { cinnmxy; bfs(); // 按行列输出每行对应棋盘的一行 for(int i1;in;i) { for(int j1;jm;j) { coutdist[i][j] ; } coutendl; } return 0; }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2493868.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!