uva 439_uva439-程序员宅基地

技术标签: uva  bfs  graph  

/*************************************************************************
     File Name: uva439.cpp
     Author: yubo
     Mail: [email protected] 
     Created Time: 2014/5/18 23:15:55
reference:http://blog.sina.com.cn/s/blog_6730a3aa0100vkzd.html
类似于中国象棋中的马的走法,但是这道题改来改去终于自己做出来了
input:
e2 e4
a1 b2
b2 c3
a1 h8
a1 h7
h8 a1
b1 c3
f6 f6
 ************************************************************************/

#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
int dir[8][2]={
	{2,1},{2,-1},{1,2},{1,-2},{-1,2},{-1,-2},{-2,1},{-2,-1},
};
typedef struct{
	int x,y;
	int times;

}SE;
int x1,y1,x2,y2;//
int judge1(int i,int j)
{
	if(i>=0&&i<8&&j>=0&&j<8)
		return 1;
	else
		return 0;

}
int vis[8][8];
char command[2][5];//记录命令
int ans;
void bfs(int x,int y)
{
	queue<SE> q;
	SE q0,q1,q2;
	q0.x=x;
	q0.y=y;
	q0.times=0;
	vis[x][y]=1;
	q.push(q0);
	while(!q.empty()){
		q1=q.front();
		q.pop();
		for(int i=0;i<8;i++){
			int temp1=q1.x+dir[i][0];
			int temp2=q1.y+dir[i][1];
			if(judge1(temp1,temp2)&&!vis[temp1][temp2]){
				if(temp1==x2&&temp2==y2){
					ans=q1.times+1;
					return ;
				}
				q2.x=temp1;
				q2.y=temp2;
				q2.times=q1.times+1;
				vis[temp1][temp2]=1;
				q.push(q2);
			}
		}


	}


}
int main()
{
//	freopen("in.txt","r",stdin);
	while(cin>>command[0]>>command[1]){
		memset(vis,0,sizeof(vis));
		y1=command[0][0]-'a';
		x1=command[0][1]-'1';
		y2=command[1][0]-'a';
		x2=command[1][1]-'1';
		ans=0;
//		printf("%d %d %d %d\n",x1,y1,x2,y2);
//		printf("%s\n",command[0]);
		bfs(x1,y1);
		cout<<"To get from "<<command[0]<<" to "<<command[1]<<" takes "<<ans<<" knight moves."<<endl;
	}
}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuzibode/article/details/27793109

智能推荐

五类推荐系统算法,非常好使,非常全面_简述五种推荐系统-程序员宅基地

  序言  最近因为PAC平台自动化的需求,开始探坑推荐系统。这个乍一听去乐趣无穷的课题,对于算法大神们来说是这样的:    而对于刚接触这个领域的我来说,是这样的:    在深坑外围徘徊了一周后,我整理了一些推荐系统的基本概念以及一些有代表性的简单的算法,作为初探总结,也希望能抛砖引玉,给同样想入坑的伙伴们提供一些思路。  ◆ ◆ ◆  什么是推荐系统  1. 什..._简述五种推荐系统

我的项目经验总结——负载均衡的理解和实战:1-程序员宅基地

前言目前接触的一个服务,它的7层负载均衡使用Nginx,4层使用的是我司自研的弹性负载均衡ELB。而本文介绍和实战的是工作在4层负载均衡之一的LVS(Linux Virtual Server),权当抛砖引玉,实战是从工作中简化而来。概念章文嵩博士在 1998 年 5 月成立了 Linux Virtual Server 的自由软件项目,进行Linux服务器集群的开发工作,并且在 Li

组播的时候到底该如何绑定网卡_vlc双网卡-程序员宅基地

http://blog.hongquan.me/?p=114以前在代码中,遇到组播都是一直绑定0.0.0.0然后去把自己加入到组播组里面去。但是最近的一次改动却让我发现了一个问题。因为在显示的环境中机器上会有很多网卡(>3)。 而我们指向接收其中一个子网中的组播中的数据,那么很明显的想法就是接收端绑定相应子网的IP。在windows环境中,我们绑定了机器上该子网的IP(例如:172.1_vlc双网卡

python3 utf8 cant decode_python3:(unicode error) 'utf-8' codec can't decode-程序员宅基地

由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:#!/usr/bin/envpython3#-*-coding:utf-8-*-环境:操作系统:win7 旗舰版语言:python3.4文本编辑器:vim、notepa...

信息学奥赛一本通 1925:【03NOIP普及组】麦森数 | OpenJudge NOI 4.4 1708:麦森数 | 洛谷 P1045 [NOIP2003 普及组] 麦森数_1925:【03noip普及组】麦森数_君义_noip的博客-程序员宅基地

【题目链接】ybt 1925:【03NOIP普及组】麦森数洛谷 P1045 [NOIP2003 普及组] 麦森数【题目考点】1. 高精度2. 求一个数字位数设正整数x的的位数为n,那么有:n=⌊lgx⌋+1n = \lfloor lgx \rfloor + 1n=⌊lgx⌋+1(lgxlgxlgx:以10为底x的对数)证明:正整数x和它的位数n之间满足:n=⌊lgx⌋+1n = \lfloor lgx \rfloor + 1n=⌊lgx⌋+1已知:10n−1≤x<10n10^{n-1_1925:【03noip普及组】麦森数

MySql实现远程连接,用户grant授权-程序员宅基地

https://blog.csdn.net/hnxuwei/article/details/504817491、进入mysql,创建一个新用户root,密码为root:格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by “用户密码”;grant select,update,insert,delete on . to [email protected]...

随便推点

leetcode 26. 删除排序数组中的重复项 (python)-程序员宅基地

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums =...

Android -- 线程通信之AsyncTask、Handler-程序员宅基地

线程通信方式: AsyncTask (异步任务)和Handler(句柄)

Kafka Eagle这款监控工具_kafka eagle看不到offset-程序员宅基地

问题导读:1.Kafka Eagle实现kafka消息监控的代码细节是什么?2.Kafka owner的组成规则是什么?3.怎样使用SQL进行kafka数据预览?4.Kafka Eagle是否支持多集群监控?1.概述在《Kafka 消息监控 - Kafka Eagle》一文中,简单的介绍了 Kafka Eagle这款监控工具的作用,截图预览,_kafka eagle看不到offset

计算机基础知识(面试),新人面试计算机基础知识试题-程序员宅基地

精品试题一1.个人计算机简称为PC机,这种计算机属于()。A.微型计算机B.小型计算机C.超级计算机D.巨型计算机2.一个完整的计算机系统通常包括( )。A.硬件系统和软件系统B.计算机及其外部设备C.主机、键盘与显示器D.系统软件与应用软件3.计算机中信息存储的最小单位是( )。A.二进制位B.字节C.字D.字长4.要把一张照片输入计算机,必须用到( )。A.打印机B.扫描仪C.绘图仪D.软盘5..._计算机基础知识面试

Java中高级核心知识全面解析——线程池(好处、Executor-框架、ThreadPoolExecutor类简单介绍)_使用threadpooltaskexecutor的好处-程序员宅基地

一、使用线程池的好处池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java 并发编程的艺术》提到的来说一下使用线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执_使用threadpooltaskexecutor的好处

python【第五篇】异常处理-程序员宅基地

作用程序遇到异常会退出,处理异常增加程序的健壮性常见异常NameError 尝试访问一个没有声明的变量ImportError 无法引入模块或包;可能路径不存在IndentationError 语法错误(的子类);代码没有正确对齐SyntaxError 语法错误IndexError ...