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

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

地址:

题意:按照国际象棋规则马最少几步从开始点走到终点。

mark:bfs,仔细。

代码:

#include 
#include
int a[100][2],d[8][8];char p[5],q[5];void bfs(){ int front = 0,rear = 1,m,n; d[p[0]-'a'][p[1]-'0'-1] = 0; a[0][0] = p[0]-'a'; a[0][1] = p[1]-'0'-1; while(front != rear) { m = a[front][0]; n = a[front++][1]; if(m == q[0]-'a' && n == q[1]-'0'-1) return ; if(m > 1 && n > 0 && !d[m-2][n-1]) a[rear][0] = m-2, a[rear++][1] = n-1, d[m-2][n-1] = d[m][n]+1; if(m > 0 && n > 1 && !d[m-1][n-2]) a[rear][0] = m-1, a[rear++][1] = n-2, d[m-1][n-2] = d[m][n]+1; if(m > 1 && n < 7 && !d[m-2][n+1]) a[rear][0] = m-2, a[rear++][1] = n+1, d[m-2][n+1] = d[m][n]+1; if(m > 0 && n < 6 && !d[m-1][n+2]) a[rear][0] = m-1, a[rear++][1] = n+2, d[m-1][n+2] = d[m][n]+1; if(m < 7 && n > 1 && !d[m+1][n-2]) a[rear][0] = m+1, a[rear++][1] = n-2, d[m+1][n-2] = d[m][n]+1; if(m < 6 && n > 0 && !d[m+2][n-1]) a[rear][0] = m+2, a[rear++][1] = n-1, d[m+2][n-1] = d[m][n]+1; if(m < 7 && n < 6 && !d[m+1][n+2]) a[rear][0] = m+1, a[rear++][1] = n+2, d[m+1][n+2] = d[m][n]+1; if(m < 6 && n < 7 && !d[m+2][n+1]) a[rear][0] = m+2, a[rear++][1] = n+1, d[m+2][n+1] = d[m][n]+1; }}int main(){// freopen("in.txt", "r", stdin); while(~scanf("%s %s", p, q)) { memset(d, 0, sizeof(d)); bfs(); printf("To get from %s to %s takes %d knight moves.\n", p, q, d[q[0]-'a'][q[1]-'0'-1]); } return 0;}

转载于:https://www.cnblogs.com/andre0506/archive/2012/07/12/2588857.html

你可能感兴趣的文章
洛谷 CF937A Olympiad
查看>>
Codeforces Round #445 C. Petya and Catacombs【思维/题意】
查看>>
用MATLAB同时作多幅图
查看>>
python中map的排序以及取出map中取最大最小值
查看>>
ROR 第一章 从零到部署--第一个程序
查看>>
<form>标签
查看>>
vue去掉地址栏# 方法
查看>>
Lambda03 方法引用、类型判断、变量引用
查看>>
was集群下基于接口分布式架构和开发经验谈
查看>>
MySQL学习——MySQL数据库概述与基础
查看>>
ES索引模板
查看>>
HDU2112 HDU Today 最短路+字符串哈希
查看>>
JPanel重绘
查看>>
图片放大器——wpf
查看>>
SCALA STEP BY STEP
查看>>
cocos2d-x学习笔记
查看>>
MySql中的变量定义
查看>>
Ruby数组的操作
查看>>
hdu1181暴搜
查看>>
解码字符串 Decode String
查看>>