AlgoMooc
← 返回题库

P2472. 竖直四子棋

中等通过率 27% · 提交 109 · 通过 29
模拟哈希表枚举

小慕正在设计一个竖直放置的四子棋游戏。棋盘竖立,双方轮流选择一列落子,棋子受重力影响落到该列底部或已有棋子之上。当某一列已放满棋子时,该列不能再落子。率先在横、竖或斜方向上连成四子的一方获胜。现在给定一个棋盘和红蓝双方的下子顺序,请你判断红方或蓝方是否在某一步获胜。 下面以6行5列的棋盘图示说明落子过程: ![image.png](/api/public/img/4ce88566099e484684babf5df1695230.png) 下面给出横、竖和斜方向四子连线的图示: ![image.png](/api/public/img/0d1d24fd9858412d9a2140fb9f71dd46.png)

提示:带虚线的词点一下有通俗解释。

输入描述

输入为2行, 第一行指定棋盘的宽和高,为空格分隔的两个数字; 第二行依次间隔指定红蓝双方的落子步骤,第1步为红方的落子,第2步为蓝方的落子,第3步为红方的落子,以此类推。 步骤由空格分隔的一组数字表示,每个数字为落子的列的编号(最左边的列编号为1,往右递增)。用例保证数字均为32位有符号数。

输出描述

如果落子过程中红方获胜,输出 N,red; 如果落子过程中蓝方获胜,输出 N,blue; 如果出现非法的落子步骤,输出 N,error。 N为落子步骤的序号,从1开始。如果双方都没有获胜,输出 0,draw。 非法落子步骤有两种,一是列的编号超过棋盘范围,二是在一个已经落满子的列上落子。 N和单词red、blue、draw、error之间是英文逗号连接。

示例

示例 1

输入

5 5
1 1 2 2 3 3 4 4

输出

7,red

示例 2

输入

5 5
0 1 2 2 3 3 4 4

输出

1,error

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。