SP2174 DTT - Drop the Triples
题目描述
在百慕大三角的一座小加勒比海岛上,居民们十分热衷于在温暖的夏夜玩一种与三角形有关的纸牌游戏,名为「三元组」。这个游戏玩法简单,但趣味无穷。
游戏由两名玩家参与,使用一副标准扑克牌。牌的区分仅基于其数值,范围是从1(即A)到13(即K)。洗牌后将牌面朝下置于桌中央,成为「牌堆」。两名玩家轮流进行游戏,每一轮由以下两个动作组成:
- 从牌堆顶抽一张牌,加入到自己的手牌中;
- 决定是否要「打出一些三元组」。
打出一个三元组是指从手牌中挑选三张牌(即一个三元组),翻开并放在桌上。打出的三元组将一直保留在桌面,直至游戏结束。只有某些特定组合的三张牌才构成有效三元组,类型如下:
- 完美三元组:三张牌的数值代表了等边三角形的三条边长;
- 普通三元组:三张牌的数值代表了任何非等边的三角形的三条边长。
下图展示了完美三元组(a)、普通三元组(b)和无效三元组(c)的示例。

尽管只有有效的三元组可以被打出,但在一轮内,玩家可以打出任意数量的三元组。特别是,玩家在每一轮都能清楚牌堆剩余的牌数,因此可以在最后一轮选择打出所有的三元组。不过,一些玩家会选择在游戏过程中打出部分三元组,以便减少手牌的数量。
游戏在牌堆抽完时结束。胜利者为打出最多完美三元组的玩家。如果两名玩家的完美三元组数量相同,则比较普通三元组数量,数量多者胜出。如果两者两种三元组的数量均相同,则比赛平局。
给定牌堆中牌的顺序,编写一个程序来根据玩家的最佳策略,确定「三元组」游戏的获胜者。
输入格式
输入由多个测试用例构成。每个测试用例的第一行包含一个整数 $N$,表示牌堆中的牌数($6 \le N \le 10^4$)。第二行包含 $N$ 个以空格分隔的整数 $X_i$,表示牌的数值($1 \le X_i \le 13$,对于 $1 \le i \le N$)。这些牌按照玩家的抽牌顺序给出:输入的第一张牌($X_1$)是第一张被拿取的牌,第二张牌($X_2$)是第二张,依此类推。牌堆中可能存在数值相同的多张牌,并且不一定所有数值的牌都会出现。输入终止于 $N = 0$。
输出格式
对于每个测试用例,程序应输出一行,内容为 `1` 表示第一个玩家获胜,`2` 表示第二个玩家获胜,`0` 表示比赛平局。
**本翻译由 AI 自动生成**