算法题目
竖直四子棋的棋盘是竖立放置的,在这个游戏里,红、蓝双方会轮流选择棋盘的一列进行落子。由于重力的作用,棋子会落到棋盘底部或者已有的棋子之上。当某一列的棋子放满之后,就不能再在这一列落子了。游戏的获胜条件是,一方的 4 个棋子在横、竖或者斜方向连成一线。
现在给出一个棋盘以及红、蓝双方的落子步骤,需要你判断红方或蓝方是否在某一步获胜。
输入要求如下:
输入包含 2 行。第一行是用空格分隔的两个数字,分别表示棋盘的宽和高。第二行依次间隔指定红蓝双方的落子步骤,第 1 步是红方落子,第 2 步是蓝方落子,第 3 步又是红方落子,以此类推。这些步骤由一组用空格分隔的数字表示,每个数字代表落子的列的编号,最左边的列编号为 1,往右依次递增。输入的数字均为 32 位有符号数。
输出要求如下:
- 如果在落子过程中红方获胜,输出
N, red。 - 如果在落子过程中蓝方获胜,输出
N, blue。 - 如果出现非法的落子步骤,输出
N, error。
这里的N是落子步骤的序号,从 1 开始。如果双方都没有获胜,输出0,draw。非法落子步骤有两种情况,一是列的编号超出了棋盘范围,二是在已经落满子的列上落子。N和单词red、blue、draw、error之间用英文逗号连接。
例如:
示例一:
输入:
订阅专栏 解锁全文
295

被折叠的 条评论
为什么被折叠?



