#P103. Bishop Attack!!!(Hard Version)

Bishop Attack!!!(Hard Version)

题目描述

此题在Easy Version中多了若干个碍事的白士兵

在国际象棋中,主教只能在棋盘中斜着走,移动的格数不限,但是不能越过其他棋子; 现在在一个空的棋盘中放置着一个白主教和一个黑国王,还有 kk 个白士兵,假设国王不能移动,士兵也不能移动,主教最少需要移动几步可以吃掉国王,主教的移动路线必须要绕过这些白士兵,输出最少移动的步数,如果不能,输出 1-1

Tips:Tips: 在国际象棋中,棋子的位置一般用一个 aha - h 的小写字母表示所在列数(从左到右),和一个 181 - 8 的数字表示所在行数(从下到上),

输入格式

两行,每行都有一个小写字母和一个数字,第一行是主教的在棋盘中的位置,第二行是国王在棋盘中的位置; 第三行输入一个数 k(0k62)k \, (0 \le k \le 62),表示有 kk 个士兵在棋盘上; 随后输入 kk 行,每行都有一个小写字母和一个数字,表示士兵的位置。读入的时候须注意每行后面的换行。

HITS:我们可以注意到一行只可能有两个字符,可以用一个char类型的数组和%s读入,这样可以忽视掉末尾的换行,代码如下:

char str[2];//定义一个长度为2的char数组
scanf("%s",str);//读入一行中的两个字符,第一个字符是str[0],第二个字符是str[1]

读入方法不唯一,请自行选择。

输出格式

一个数字,主教最少需要移动几步可以吃掉国王,如果不能,输出 1-1

样例1

样例1

c4
f7
1
e6
3

样例2

样例2

f1
f5
5
e6
g6
d3
f3
g4
6