首页 > 试题广场 >

下象棋

[编程题]下象棋
  • 热度指数:2704 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

牛妹在和牛牛下牛客象棋。现在轮到牛妹了,牛妹想知道她在这一回合能否战胜牛牛。

棋盘chessboard上只可能包含:炮,将,车,兵

牛客象棋的规则解释:
炮:炮在不吃子的时候,走动与车完全相同,但炮在吃棋子时,必须跳过一个棋子,我方的和敌方的都可以
兵:可以上下左右移动,每次只能移动一格
车:上下左右均可走,只要无棋子阻拦,步数不受限制。
将:可以上下左右移动,每次只能移动一格
接下来给出一个棋盘,牛妹的棋子用大写字母表示,牛牛的棋子用小写字母表示。
将用表示,炮用表示,车用表示,兵用表示,没有棋子的格子用表示

保证棋盘上一定同时包含各一个。

牛妹能胜利则返回"Happy",否则返回"Sad"

示例1

输入

["......", "..B...", "P.C.j.", "......", "..b..."," ...J.." ]

输出

"Happy"

说明

牛妹的炮可以攻击到牛牛的将,所以获胜

备注:


头像 Tag_Kausal
发表于 2020-02-07 15:10:30
题解1:AC逆向思维思考,因为所有棋子都只能上下左右移动,所以为了判断牛牛的将能否被吃下,只需要判断牛牛的那一行与列的棋子情况即可。具体来说:对于兵和将,只可能在牛牛的将的上下左右四个相邻的方向上才能取胜;对于车来说,只可能在上下左右四个方向上并且与牛牛的将之间没有其他棋子时才能取胜;对于炮来说,只 展开全文
头像 未来0116
发表于 2021-08-03 21:40:09
一.题目描述NC518下象棋牛妹在和牛牛下牛客象棋。现在轮到牛妹了,牛妹想知道她在这一回合能否战胜牛牛。棋盘chessboard上只可能包含:炮,将,车,兵牛客象棋的规则解释:炮:炮在不吃子的时候,走动与车完全相同,但炮在吃棋子时,必须跳过一个棋子,我方的和敌方的都可以兵:可以上下左右移动,每次只能 展开全文
头像 Maokt
发表于 2021-08-03 16:02:45
算法思想一:模拟搜索 解题思路: 逆向思维思考,因为所有棋子都只能上下左右移动,所以为了判断牛牛的将能否被吃下,只需要判断牛牛的那一行与列的棋子情况即可。 1、首先找到牛牛的将在什么位置。 2、以牛牛将的位置为起点,沿着四个方向进行搜索,当与起点位置相邻,   &nb 展开全文
头像 xqxls
发表于 2021-08-02 14:06:16
题意整理 只要牛妹的炮,将,车,兵的任意一个能吃到牛牛的将,则牛妹获胜。 将、兵只有在相邻的时候才能吃。 炮、车在同行和同列都可以吃,炮需要隔一个棋子,车不能有棋子挡在中间。 方法一(模拟搜索) 1.解题思路 首先找到牛牛的将在什么位置。 以牛牛将的位置为起点,沿着四个方向进行搜索,当与起点位 展开全文
头像 认认真真coding
发表于 2021-08-03 12:17:07
题目描述牛妹在和牛牛下牛客象棋。现在轮到牛妹了,牛妹想知道她在这一回合能否战胜牛牛。 棋盘chessboard上只可能包含:炮,将,车,兵 牛客象棋的规则解释:炮:炮在不吃子的时候,走动与车完全相同,但炮在吃棋子时,必须跳过一个棋子,我方的和敌方的都可以兵:可以上下左右移动,每次只能移动一格车:上下 展开全文
头像 StarsシHao
发表于 2020-08-11 20:48:15
因为所有棋子都只能上下左右移动,所以为了判断牛牛的将能否被吃下,只需要判断牛牛的将那一行与列的棋子情况即可。具体来说:对于牛妹的兵和将,只可能在牛牛的将的上下左右四个相邻的方向上才能取胜;对于牛妹的车来说,只可能在上下左右四个方向上并且与牛牛的将之间没有其他棋子时才能取胜;对于牛妹炮来说,只可能在上 展开全文
头像 小兄弟加油啊
发表于 2021-10-28 20:45:47
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param chessboard string字符串vector * @return s 展开全文
头像 牛客534170409号
发表于 2021-08-07 23:34:08
题目描述 棋盘中包含四种棋子:炮P、将J、车C、兵B牛妹棋子用大写字母表示,牛牛棋子用小写字母表示问一回合内牛妹能否战胜牛牛 方法一 模拟 解题思路 棋子只能吃掉与自己同一行或同一列的棋子,所以可以只考虑与牛牛的将同一行或同一列的棋子。对于牛妹的兵和将,需要位于牛牛的将上下左右四个相邻的位置;对 展开全文
头像 QSheng
发表于 2021-07-25 15:00:21
解题思路: 1. 分情况讨论即可 1.1 找到对应j的位置 1.2 j上下左右是否有B或J 2.3 j上下左右四个方向是否有C,且无遮挡物 3.4 j上下左右四个方向是否有P,且有一个遮挡物 class Solution: def playchess(self 展开全文