poj 2243(bfs结构体)
#include<iostream> #include<cstring> #include<cstdio> #include<queue> using namespace std; int ans; int data[10][10],visit[10][10]; struct Node{ int x,y; Node(int a,int b):x(a),y(b){ } Node(){ x = -1; y = -1; } }; Node pre[10][10]; queue<Node>q; bool bfs(Node node){ q.push(node); while(!q.empty()){ int x = q.front().x; int y = q.front().y; Node u(x,y); q.pop(); if(data[x][y]==-2){ while(!q.empty()) q.pop(); return true; } else{ if(x-1>=1&&y-2>=1&&visit[x-1][y-2]==0){ q.push(Node(x-1,y-2)); visit[x-1][y-2] = 1; pre[x-1][y-2] = u; } if(x-1>=1&&y+2<=8&&visit[x-1][y+2]==0){ q.push(Node(x-1,y+2)); visit[x-1][y+2] = 1; pre[x-1][y+2] = u; } if(x-2>=1&&y-1>=1&&visit[x-2][y-1]==0){ q.push(Node(x-2,y-1)); visit[x-2][y-1] = 1; pre[x-2][y-1] = u; } if(x-2>=1&&y+1<=8&&visit[x-2][y+1]==0){ q.push(Node(x-2,y+1)); visit[x-2][y+1] = 1; pre[x-2][y+1] = u; } if(x+1<=8&&y-2>=1&&visit[x+1][y-2]==0){ q.push(Node(x+1,y-2)); visit[x+1][y-2] = 1; pre[x+1][y-2] = u; } if(x+1<=8&&y+2<=8&&visit[x+1][y+2]==0){ q.push(Node(x+1,y+2)); visit[x+1][y+2] = 1; pre[x+1][y+2] = u; } if(x+2<=8&&y-1>=1&&visit[x+2][y-1]==0){ q.push(Node(x+2,y-1)); visit[x+2][y-1] = 1; pre[x+2][y-1] = u; } if(x+2<=8&&y+1<=8&&visit[x+2][y+1]==0){ q.push(Node(x+2,y+1)); visit[x+2][y+1] = 1; pre[x+2][y+1] = u; } } } } int main(){ char a[5],b[5]; while(scanf("%s%s",a,b)==2){ memset(data,0,sizeof data); memset(visit,0,sizeof visit); memset(pre,0,sizeof pre); int x = a[0]-'a'+1; int y = a[1]-'1'+1; data[x][y] = -1; int p = b[0]-'a'+1; int q = b[1]-'1'+1; data[p][q] = -2; visit[x][y] = 1; Node node(x,y); bfs(node); ans = 0; if(x==p&&y==q){ printf("To get from %s to %s takes 0 knight moves.\n",a,b); continue; } while(true){ int tp = pre[p][q].x; int tq = pre[p][q].y; ans++; if(data[tp][tq]==-1){ break; } p = tp; q = tq; } printf("To get from %s to %s takes %d knight moves.\n",a,b,ans); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)