poj2243
来源:互联网 发布:驱动保护编程 编辑:程序博客网 时间:2024/04/30 14:33
可以用A*算法,不过宽搜已经能过了
#include <iostream>#include <cstring>#include <queue>#include <cstdio>struct node{ int x; int y; int step;};node start,end;void BFS(); using namespace std; int main() { char c1,c2,c3,c4; while(scanf("%c%c",&c1,&c2)==2) { getchar(); scanf("%c%c",&c3,&c4); start.x=c1-'a'+1; start.y=c2-'0'; start.step=0; end.x=c3-'a'+1; end.y=c4-'0'; BFS(); getchar(); } return 0; }void BFS(){ queue<node>q; int visit[10][10]; int a[]={-2,-1,1,2,-2,-1,1,2}; int b[]={1,2,2,1,-1,-2,-2,-1}; int i,j; memset(visit,0,sizeof(visit)); node temp,k; q.push(start); while(!q.empty()) { temp=q.front(); q.pop(); if ((temp.x==end.x)&&(temp.y==end.y)) { printf("To get from %c%d to %c%d takes %d knight moves.\n",start.x+'a'-1,start.y,end.x+'a'-1,end.y,temp.step); return; } for (i=0;i<=7;i++) { if ((temp.x+a[i]>=1)&&(temp.x+a[i]<=8)&&(temp.y+b[i]>=1)&&(temp.y+b[i]<=8)&&(!visit[temp.x+a[i]][temp.y+b[i]])) { k.x=temp.x+a[i]; k.y=temp.y+b[i]; k.step=temp.step+1; visit[temp.x+a[i]][temp.y+b[i]]=1; q.push(k); } } }}
0 0
- POJ2243
- poj2243
- poj2243
- poj2243
- poj2243
- poj1915 & poj2243 Knight Moves
- poj2243 Knight Moves
- poj2243 Knight Moves (BFS)
- POJ2243 简单BFS
- POJ2243 A*算法BFS
- 1poj2243(bfs)
- poj2243 【搜索】【深度优先】
- poj2243 广搜第一道
- POJ2243 Knight Moves
- poj2243+poj1915骑士问题
- BFS POJ2243- Dario
- poj2243~双向bfs
- poj2243 hdu 1372 bfs
- MYSQL-LOAD DATA 0row问题解决
- MATLAB R2014a 中文版下载安装图文教程
- 闭合浮动
- Java零散知识点学习记录
- The fisr scan script coded by python
- poj2243
- 2015.11.09 类的定义,成员变量,局部变量 ,重载,所谓的匿名对象
- iOS 根证书和 P12 区分
- 正则表达式
- 安卓开发“出错总结”
- ios apple企业账号申请流程
- Activity 学习
- Android 网络通信之 HttpURLConnection
- MobclickAgent