博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2243
阅读量:6621 次
发布时间:2019-06-25

本文共 1315 字,大约阅读时间需要 4 分钟。

BFS

View Code
#include 
#include
#include
#include
#include
using namespace std;#define maxn 10struct Point{ int x, y;}s, t;int dir[8][2] = {
{
1, 2}, {
1, -2}, {-1, 2}, {-1, -2}, {
2, 1}, {-2, 1}, {
2, -1}, {-2, -1}};bool in_bound(Point a){ return a.x >= 0 && a.y >= 0 && a.x < 8 && a.y < 8;}int bfs(){ if (s.x == t.x && s.y == t.y) return 0; queue
q; bool vis[maxn][maxn]; int dist[maxn][maxn]; memset(vis, 0, sizeof(vis)); q.push(s); vis[s.x][s.y] = true; dist[s.x][s.y] = 0; while (!q.empty()) { Point a = q.front(); q.pop(); for (int i = 0; i < 8; i++) { Point b; b.x = a.x + dir[i][0]; b.y = a.y + dir[i][1]; if (in_bound(b) && !vis[b.x][b.y]) { vis[b.x][b.y] = true; dist[b.x][b.y] = dist[a.x][a.y] + 1; q.push(b); if (b.x == t.x && b.y == t.y) return dist[b.x][b.y]; } } } return -1;}int main(){// freopen("t.txt", "r", stdin); char st1[10], st2[10]; while (~scanf("%s", st1)) { s.x = st1[0] - 'a'; s.y = st1[1] - '1'; scanf("%s", st2); t.x = st2[0] - 'a'; t.y = st2[1] - '1'; printf("To get from %s to %s takes %d knight moves.\n", st1, st2, bfs()); } return 0;}

 

转载于:https://www.cnblogs.com/rainydays/archive/2013/01/12/2857663.html

你可能感兴趣的文章
基于 Zookeeper 的分布式锁实现
查看>>
线上问题排查常见脚本工具
查看>>
WKWebView 的一些小总结
查看>>
Ubuntu准备+MySQL+Java
查看>>
CDN详解
查看>>
TensorFlow 初探
查看>>
WEEX 使用navigator跳转Android系统出现ActivityNotFoundException报错
查看>>
【译】统一样式语言
查看>>
Redis Bitmaps
查看>>
spring boot 之旅 - 集成模板引擎beetl
查看>>
2017-07-09 前端日报
查看>>
前端PS切图
查看>>
C#给自动属性设置默认值
查看>>
示例使用git操作本地仓库
查看>>
Vue.js 入门最佳项目实践-个人博客全栈SPA应用从零到上线
查看>>
dnsmasq+nginx缓存
查看>>
【116天】尚学堂高琪Java300集视频精华笔记(9-12)
查看>>
常见算法
查看>>
react native 整合极光推送(Android)
查看>>
记一次线上bug处理-mybatis一级缓存引起
查看>>