问题1830--中国象棋

1830: 中国象棋

时间限制: 1 Sec  内存限制: 128 MB
提交: 8  解决: 1
[状态] [讨论版] [提交] [命题人:]
题目描述

中国象棋基本规则

 

棋盘:

中国象棋的棋盘有九条平行的竖线和十条平行的横线相交而组成,其中共有九十个交叉点,棋子就摆在这些交叉点上。中间部分(棋盘的第五,第六两横线之间末画竖线的空白地带)称为 河界 。两端的中间(两端第四条到第六条竖线之间的正方形部位),以斜交叉线构成中文字形方格的地方,叫作 九宫 (它恰好有九个交叉点)。

界河:

这是一个和国际象棋不同的地方,及对垒双方的中间有一条河界,通常称其为楚河,也就是说棋子过河才能攻打对方的首领。这些规则都是和中国古战场的一些场景类似,并且逐渐演变而来成为中国象棋的行棋基本规则。

九宫:

双方的底线中心处,也就是纵向中心线分别向两边外移一条线(第四条到第六条竖线)之间的正方形部位,以斜交叉线构成  字方格的地方,叫作 九宫 (它恰好有九个交叉点),知道这个区域,对理解一些走棋规则很有帮助。

棋子:

所有的棋子共有三十二个,其中又分为红、黑两组(分别代表对垒的一方),每组共有十六个棋子(为了区别双方的棋子,不仅在颜色中有所区别,而且还会使用同音不同字的棋子),其中又各分为七种棋子,其名称和数目如下:

红棋子:帅一个,车、马、炮、相、士各两个,兵五个。

黑棋子:将一个,车、马、炮、象、士各两个,卒五个。

将(帅):

虽然名称不同,但它们这都是对垒双方的最高统帅,对垒的目的就是通过运用各自的棋子,想方设法将对方的首领将死,方为己方胜利。这两位棋子的最高统帅,只能在九宫内行走,不得走出九宫外。行走的步法为:左、右横走,上、下竖走都行,但每次只能行走一格。将和帅不准在同一直线上直接对面(中间无棋子),如一方已先占据位置,则另一方必须回避,否则就算输了。

士(仕):

每行一步棋,只许沿着 九宫 中的斜线行走一步(方格的对角线),行走方位可进、可退,其最终目的也是为了护卫各自的最高将领(帅、将)。

象(相):

此棋不能越过 河界走入对方的领地,其走法为:只能斜走(两步),可以使用汉字中的田字形象地表述:田字格的对角线,即俗称象(相)走田字。行走方位可进、可退,但是,当象(相)行走的路线中,及田字中心有棋子时(无论己方或者是对方的棋子),则不允许走过去,俗称:塞象(相)眼

车(車):

此棋是中国象棋中棋力最强的棋子,每行一步棋可以上、下直线行走(进、退);左、右横走(中间不隔棋子),且行棋步数不限。

炮(砲):

此棋的行棋规则和车(車)类似,横平、竖直,只要前方没有棋子的地方都能行走。但是,它的吃棋规则很特别,必须跳过一个棋子(无论是己方的还是对方的)去吃掉对方的一个棋子。俗称:隔山打炮

马(馬):

走棋规则:使用中国的日字来形容马的行走方式比较贴切,俗称:马走日字(斜对角线)。但是,这里有一个行走规则,可以将马走日分解为:先一步直走(或一横)再一步斜走,如果在要去的方向,第一步直行处(或者横行)有别的棋子挡住,则不许走过去(俗称:蹩马腿)。行走范围不限,可以进、也可以退。

卒(兵):

在没有过河界前,此棋每走一步棋只许向前直走一步(不能后退);过了河界之后,每行一步棋可以向前直走,或者横走(左、右)一步,但也是不能后退的。根据此规则,卒(兵)走到对方的底线只能左右横走,俗称:兵走老了

吃子:

①无论什么棋子,通常只要根据行棋规则能走到的部位有对方的棋子就能吃掉对方的棋子。

②而唯一列外的是炮的吃棋方法,比较特殊,需要中间隔有旗子(无论是己方的还是对方的棋子)才能吃掉对方的棋子。

----来自百度百科

 

现在我们给出一个中国象棋的残局,轮到红方走棋,判断红方能否一步杀,即红方是否可能在移动某个棋子之后,吃掉黑方的将。

本题中红方棋子用大写字母表示,黑方棋子用小写字母。

C(c)为车,M(m)为马,X(x)为象,S(s)为士,J(j)为将,P(p)为炮,B(b)为兵。

输入

第一行为一个正整数T代表T组数据,

每组输入包含10行,代表残局。

输出

如果红方能达成一步杀则输出YES,否则输出NO

样例输入 Copy
1
cmxsjsxmc
.........
.p.....p.
b.b.b.b.b
.........
.........
B.B.B.B.B
.P.....P.
.........
CMXSJSXMC
样例输出 Copy
NO
来源/分类