红心大战问题求大神指点
相信大家都有玩过“红心大战”这款游戏.现在有4个玩家来进行操作,我们会介绍本题中的游戏规则和玩家的出牌策略,你的任务是根据初始局面来计算最后的得分情况.
游戏开始时,4名玩家平分一副扑克牌除去双王后的52张牌,即每名玩家13张牌.点数从小到大为2,3,4,5,6,7,8,9,10,J,Q,K,A,输入中会用11,12,13,1来表示J,Q,K,A.我们另用1,2,3,4分别表示梅花、方片、黑桃、红桃四种花色.这样可以用一个二元组来表示一张扑克牌.比如(2,7)来表示方片7.由于本题中手牌的位置直接影响了玩家的出牌,因此玩家会将手牌排序,规则为先比较花色,再比较点数.如(1,3),(1,1),(3,10),(4,2),(4,6)就是排好序的手牌.
4名玩家坐成一圈,一轮出牌定义为从某名玩家开始按顺时针顺序每人各出一张牌.第一轮,从持有梅花2的玩家开始出牌,他需要打出梅花2.以后每轮,第一个出牌的玩家都会打出手中最左边的一张牌.对于某轮并非第一个出牌的玩家,他会考虑本轮中已经打出的、花色与第一个出牌的玩家打出牌相同的、点数最大的牌.若该玩家没有与之相同花色的牌,他会将手中最右边的一张牌打出,否则有两种情况:
(1) 若其手中存在与之相同花色且点数更小的牌,他会选择相同花色、点数更小的牌中点数最大的打出.
(2) 若其手中与之花色相同的牌的点数都更大,他会选择相同花色、点数最大的牌打出.
一轮游戏完成后,打出了与第一个出牌的玩家打出牌花色相同且点数最大的玩家收走这一轮打出的4张牌,并由他作为下一轮第一个出牌的玩家开始下一轮.
所有牌打完后,统计每名玩家收走的牌.其中每有一张红桃牌,该玩家获得1分。收走黑桃的玩家得到13分.需要注意的是,若一名玩家得到了全部的26分,则改为他不得分,其他3名玩家各得26分.
可以发现,本题中的规则与实际规则会有出入.
本题中4名玩家按顺时针的编号为1,2,3,4.
为了方便选手得到部分分,本题中玩家的牌可能是不完整的,即总量不足52张,但仍保证每人手牌数量相同、没有相同的牌且梅花2在其中一人手中.
附件2说明:第一行一个正整数T表示数据组数.对于每组数据,第一行一个正整数 表示每人的手牌数,接下来 行依次描述编号为1,2,3,4的玩家的手牌,每人用 行每行一个二元组来表示.注意给出的手牌不一定有序.
输出格式:输出结果请以.txt文件进行提交,对于每组数据输出一行4个数依次表示编号为1,2,3,4的玩家的得分.如:3组数据的输出格式为
0 13 0 3
0 0 18 2
14 4 1 0