sdau-2 1015

描述:

在国际象棋中,输入起点终点,让骑士移动,求起点到终点的最短步数。

输入

 
 
e2 e4
a1 b2
b2 c3
a1 h8
a1 h7
h8 a1
b1 c3
f6 f6
字母代表行,数字代表列
输出
    
    
To get from e2 to e4 takes 2 knight moves.
To get from a1 to b2 takes 4 knight moves.
To get from b2 to c3 takes 2 knight moves.
To get from a1 to h8 takes 6 knight moves.
To get from a1 to h7 takes 5 knight moves.
To get from h8 to a1 takes 6 knight moves.
To get from b1 to c3 takes 1 knight moves.
To get from f6 to f6 takes 0 knight moves.
思路
课件,课上讲的基础广搜,就是行变成字母了,用char数组解决。
代码
#include <stdio.h>   #include <string.h>   #include <queue>   using namespace std;      int step;   int to[8][2] = {-2,1,-1,2,1,2,2,1,2,-1,1,-2,-1,-2,-2,-1}; int map[10][10],ex,ey;   char s1[5],s2[5];      struct node   {       int x,y,step;   };      int check(int x,int y)   {       if(x<0 || y<0 || x>=8 || y>=8 || map[x][y])       return 1;       return 0;   }      int bfs()   {       int i;       queue<node> Q;       node p,next,q;       p.x = s1[0]-'a';       p.y = s1[1]-'1';       p.step = 0;       ex = s2[0]-'a';       ey = s2[1]-'1';       memset(map,0,sizeof(map));       map[p.x][p.y] = 1;       Q.push(p);       while(!Q.empty())       {           q = Q.front();           Q.pop();           if(q.x == ex && q.y == ey)           return q.step;           for(i = 0;i<8;i++)           {               next.x = q.x+to[i][0];               next.y = q.y+to[i][1];               if(next.x == ex && next.y == ey)               return q.step+1;               if(check(next.x,next.y))               continue;               next.step = q.step+1;               map[next.x][next.y] = 1;               Q.push(next);           }       }       return 0;   }      int main()   {       while(~scanf("%s%s",s1,s2))       {           printf("To get from %s to %s takes %d knight moves.\n",s1,s2,bfs());       }       return 0;   }  


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值