Codeforces-A. Shortest path of the king(简单bfs记录路径)
A. Shortest path of the king
time limit per test
1 second
memory limit per test
64 megabytes
input
standard input
output
standard output
The king is left alone on the chessboard. In spite of this loneliness, he doesn't lose heart, because he has business of national importance. For example, he has to pay an official visit to square t. As the king is not in habit of wasting his time, he wants to get from his current position s to square t in the least number of moves. Help him to do this.

In one move the king can get to the square that has a common side or a common vertex with the square the king is currently in (generally there are 8 different squares he can move to).
Input
The first line contains the chessboard coordinates of square s, the second line — of square t.
Chessboard coordinates consist of two characters, the first one is a lowercase Latin letter (from a to h), the second one is a digit from 1 to 8.
Output
In the first line print n — minimum number of the king's moves. Then in n lines print the moves themselves. Each move is described with one of the 8: L, R, U, D, LU, LD, RU or RD.
L, R, U, D stand respectively for moves left, right, up and down (according to the picture), and 2-letter combinations stand for diagonal moves. If the answer is not unique, print any of them.
Examples
input
a8
h1
output
7
RD
RD
RD
RD
RD
RD
RD
解题思路:一个8*8的图,8个方向移动,字符转化为数字表示,bfs记录路径最短路径,到达目标点即遍历结束,记录路径,路径移动方向转变为题中的字符方向。
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <stdio.h>
#include <queue>
using namespace std;
int d_x[4] = { 0, 1, -1 };
int d_y[4] = { 0, 1, -1 };
int e[10][10], book[10][10];
int next[2][10000];
int end_xx[10000],end_yy[10000];
int sum;
int start_x, start_y, end_x, end_y;
struct node {
int pre;
int x, y;
int step;
};
node qt[10000];
void conversion(int x,int y){
if(x==1){
cout<<"R";
}else if(x==-1){
cout<<"L";
}
if(y==-1){
cout<<"D";
}else if(y==1){
cout<<"U";
}
}
void bfs() {
int head = 1;
int tail = 1;
node q;
q.x = start_x;
q.y = start_y;
q.pre = head;
q.step = 0;
qt[tail] = q;
qt[tail].pre = head;
tail++;
queue<node> qq;
qq.push( q );
while( !qq.empty() ) {
node temp = qq.front();
head = temp.pre;
// cout<<"head = "<<head<<endl;
if( temp.x == end_x && temp.y == end_y ) {
int xx = temp.x;
int yy = temp.y;
sum = 0;
// cout<<"temp.pre = "<<temp.pre<<endl;
int t = qt[temp.pre].pre;
// cout<<"t ="<<t<<endl;
while(true){
// cout<<sum<<endl;
end_xx[sum] = xx-qt[t].x;
end_yy[sum] = yy-qt[t].y;
sum++;
xx = qt[t].x;
yy = qt[t].y;
if(t==1) break;
t = qt[t].pre;
}
break;
}
for(int i=0;i<3;i++){
for(int j =0;j<3;j++){
if(i==0 && j==0) continue;
int dx = temp.x + d_x[i];
int dy = temp.y + d_y[j];
if(dx>8 || dy>8 || dx<1 || dy<1) continue;
if(book[dx][dy]==0 ){
book[dx][dy] = 1;
node tt;
tt.x = dx;
tt.y = dy;
tt.pre = tail;
tt.step = temp.step+1;
qt[tail] = tt;
qt[tail].pre = head;
tail++;
qq.push(tt);
}
}
}
qq.pop();
}
return;
}
int main() {
char start[2];
char end[2];
while(cin>>start[0]>>start[1]>>end[0]>>end[1]){
start_x = start[0]-'a'+1;
start_y = start[1]-'0';
end_x = end[0]-'a'+1;
end_y = end[1]-'0';
// cout<<start_x<<" "<<end_x<<endl;
//
// cout<<start_y<<" "<<end_y<<endl;
if(start_x == end_x && start_y == end_y) {
cout<<"0"<<endl;
continue;
}
memset( book, 0, sizeof( book ) );
book[start_x][start_y] = 1;
bfs();
cout<<sum<<endl;
for( int i = sum-1 ; i >= 0; i-- ) {
// cout<<end_xx[i]<<" "<<end_yy[i]<<endl;
conversion( end_xx[i], end_yy[i] );
cout<<endl;
}
}
return 0;
}
Codeforces-A. Shortest path of the king(简单bfs记录路径)的更多相关文章
- Codeforces 3A-Shortest path of the king(BFS打印路径)
A. Shortest path of the king time limit per test 1 second memory limit per test 64 megabytes input s ...
- node搜索codeforces 3A - Shortest path of the king
发一下牢骚和主题无关: 搜索,最短路都可以 每日一道理 人生是洁白的画纸,我们每个人就是手握各色笔的画师:人生也是一条看不到尽头的长路,我们每个人则是人生道路的远足者:人生还像是一块神奇的土地 ...
- Codeforces Beta Round #3 A. Shortest path of the king 水题
A. Shortest path of the king 题目连接: http://www.codeforces.com/contest/3/problem/A Description The kin ...
- (简单) POJ 3414 Pots,BFS+记录路径。
Description You are given two pots, having the volume of A and B liters respectively. The following ...
- Codeforces Beta Round #3 A. Shortest path of the king
标题效果: 鉴于国际棋盘两点,寻求同意的操作,是什么操作的最小数量,在操作过程中输出. 解题思路: 水题一个,见代码. 以下是代码: #include <set> #include < ...
- A - Shortest path of the king (棋盘)
The king is left alone on the chessboard. In spite of this loneliness, he doesn't lose heart, becaus ...
- Shortest path of the king
必须要抄袭一下这个代码 The king is left alone on the chessboard. In spite of this loneliness, he doesn't lose h ...
- Codeforces 938G Shortest Path Queries [分治,线性基,并查集]
洛谷 Codeforces 分治的题目,或者说分治的思想,是非常灵活多变的. 所以对我这种智商低的选手特别不友好 脑子不好使怎么办?多做题吧-- 前置知识 线性基是你必须会的,不然这题不可做. 推荐再 ...
- CF3A Shortest path of the king
The king is left alone on the chessboard. In spite of this loneliness, he doesn't lose heart, becaus ...
随机推荐
- java根据数据库自动生成代码
出现这个已经创建成功 出现这个情况,没有使用DBUtil,引入即可 已经创建完成 代码下载:https://github.com/weibanggang/tool 项目实例下载:https://pan ...
- C#中小写人民币转大写
/// <summary> /// 转换成大写人民币 /// </summary> /// <param name="myMoney">< ...
- mybatis使用*号查询数据丢失问题
使用*号的SQL语句:select * from 表名 在开发过程中可能你会发现使用mybatis框架爱作为持久层时,写的SQL语句在工具里面查询数据是可以查到想要的数据的,但是在项目中会出现数据丢失 ...
- 网站http配置https -- 阿里云 nginx
通过阿里云领取免费证书可将网站配置为https 步骤为下: 登陆阿里云点击sll证书,然后点击购买证书 选择免费的 然后立即购买 购买后会让你填写一些域名信息 然后提交签发证书 签发后点击下方下载 选 ...
- 农民工自学java到找到工作的前前后后
我是一名地地道道的农民工,生活在经济落后的农村,有一个哥哥和一个弟弟,父母都是地道的农民,日出而作,日落而息,我从小到大学习一直很好,从小学到高一都,成绩在全级一直名列前茅,这样我也顺利了考上省的重点 ...
- html 页面中的 base href 和 target
它只能应用于标记<head>与</head>之间 href:网页上的所有相对路径在链接时都将在前面加上基链接指向的地址. target:—设定文件显示的窗口,同a标记中的tar ...
- hadoop生态搭建(3节点)-08.kafka配置
如果之前没有安装jdk和zookeeper,安装了的请直接跳过 # https://www.oracle.com/technetwork/java/javase/downloads/java-arch ...
- html 的radio单选框如何实现互斥------radio只是input的type属性
先看看没有互斥的情况: <html> <body> 男性:<input type="radio" id="male" /> ...
- DOM中的事件傳播機制
要講到事件傳播機制之前,首先要瞭解的是 什麼是事件? 事件,發生在靜態頁面與動態行為之間的交互行為.是JavaScript 和 HTML的交互是通过事件实现的.比如,按鈕的點擊,鼠標的滑過,鍵盤的輸入 ...
- WinSCP与Putty远程连接linux
1. 有时putty连接不上,可能是linux机器上的telnet服务未开,把蓝线上的√去掉. 2. ctrl + p 打开putty窗口: 3. putty如果显示乱码,右键 putty窗口,选择 ...