#P103. Bishop Attack!!!(Hard Version)
Bishop Attack!!!(Hard Version)
题目描述
此题在Easy Version中多了若干个碍事的白士兵
在国际象棋中,主教只能在棋盘中斜着走,移动的格数不限,但是不能越过其他棋子; 现在在一个空的棋盘中放置着一个白主教和一个黑国王,还有 个白士兵,假设国王不能移动,士兵也不能移动,主教最少需要移动几步可以吃掉国王,主教的移动路线必须要绕过这些白士兵,输出最少移动的步数,如果不能,输出 。
在国际象棋中,棋子的位置一般用一个 的小写字母表示所在列数(从左到右),和一个 的数字表示所在行数(从下到上),
输入格式
两行,每行都有一个小写字母和一个数字,第一行是主教的在棋盘中的位置,第二行是国王在棋盘中的位置; 第三行输入一个数 ,表示有 个士兵在棋盘上; 随后输入 行,每行都有一个小写字母和一个数字,表示士兵的位置。读入的时候须注意每行后面的换行。
HITS:我们可以注意到一行只可能有两个字符,可以用一个char类型的数组和%s读入,这样可以忽视掉末尾的换行,代码如下:
char str[2];//定义一个长度为2的char数组
scanf("%s",str);//读入一行中的两个字符,第一个字符是str[0],第二个字符是str[1]
读入方法不唯一,请自行选择。
输出格式
一个数字,主教最少需要移动几步可以吃掉国王,如果不能,输出 。
样例1
c4
f7
1
e6
3
样例2
f1
f5
5
e6
g6
d3
f3
g4
6