斗地主

3. 斗地主
(landlords.cpp/c/pas)
【问题描述】
牛牛最近迷上了一种叫斗地主的扑克游戏。斗地主是一种使用黑桃、红心、梅花、
方片的 A 到 K 加上大小王的共 54 张牌来进行的扑克牌游戏。在斗地主中,牌的大小关
系根据牌的数码表示如下:3<4<5<6<7<8<9<10<J<Q<K<A<2<小王<大王,而花色并不
对牌的大小产生影响。每一局游戏中,一副手牌由 n 张牌组成。游戏者每次可以根据规
定的牌型进行出牌,首先打光自己的手牌一方取得游戏的胜利。
现在,牛牛只想知道,对于自己的若干组手牌,分别最少需要多少次出牌可以将它
们打光。请你帮他解决这个问题。
需要注意的是,本题中游戏者每次可以出手的牌型与一般的斗地主相似而略有不同。
具体规则如下:
牌型 牌型说明 牌型举例照片
火箭 即双王(双鬼牌)。
炸弹 四张同点牌。如四个 A。
单张牌 单张牌,比如 3。
对子牌 两张码数相同的牌。
三张牌 三张码数相同的牌。
三带一 三张码数相同的牌 + 一张单牌。例如:
三张 3+单 4
三带二 三张码数相同的牌 + 一对牌。例如:三
张 3+对 4
单顺子 五张或更多码数连续的单牌(不包括 2
点和双王)例如:单 7+单 8+单 9+单 10+
单 J。另外,在顺牌(单顺子、双顺子、
三顺子)中,牌的花色不要求相同。
双顺子 三对或更多码数连续的对牌(不包括 2
点和双王)。例如:对 3+对 4+对 5。
三顺子 二个或更多码数连续的三张牌(不能包
括 2 点和双王)。例如:三张 3+三张 4+
三张 5。
四带二 四张码数相同的牌+任意两张单牌(或任
意两对牌)例如:四张 5+单 3+单 8 或 四
张 4+对 5+对 7
【输入格式】
全国信息学奥林匹克联赛(NOIP2015)复赛 提高组 day1
第 5 页共 6 页
输入文件名为 landlords.in。
第一行包含用空格隔开的 2 个正整数 ?, ? ,表示手牌的组数以及每组手牌的张数。
接下来 ? 组数据,每组数据 ? 行,每行一个非负整数对 ??
, ??,表示一张牌,其中 ??表
示牌的数码,?? 表示牌的花色,中间用空格隔开。特别的,我们用 1 来表示数码 A,11 表
示数码 J,12 表示数码 Q,13 表示数码 K;黑桃、红心、梅花、方片分别用 1-4 来表示;小
王的表示方法为 0 1,大王的表示方法为 0 2。
【输出格式】
输出文件名为 landlords.out。
共 T 行,每行一个整数,表示打光第?组手牌的最少次数。
【输入输出样例 1】
landlords.in landlords.out
1 8
7 4
8 4
9 1
10 4
11 1
5 1
1 4
1 1
3
见选手目录下的 landlords/landlords1.in 与 landlords/landlords1.ans。
【输入输出样例 1 说明】
共有 1 组手牌,包含 8 张牌:方片 7,方片 8,黑桃 9,方片 10,黑桃 J,黑桃 5,方
片 A 以及黑桃 A。可以通过打单顺子(方片 7,方片 8,黑桃 9,方片 10,黑桃 J),单张
牌(黑桃 5)以及对子牌(黑桃 A 以及方片 A)在 3 次内打光。
【输入输出样例 2】
landlords.in landlords.out
1 17
12 3
4 3
2 3
5 4
10 2
3 3
12 2
0 1
1 3
10 1
6 2
12 1
11 3
6
全国信息学奥林匹克联赛(NOIP2015)复赛 提高组 day1
第 6 页共 6 页
5 2
12 4
2 2
7 2
见选手目录下的 landlords/landlords2.in 与 landlords/landlords2.ans。
【样例输入输出 3】
见选手目录下的 landlords/landlords3.in 与 landlords/landlords3.ans。
【数据规模与约定】
对于不同的测试点,我们约定手牌组数 ? 与张数 ? 的规模如下:
测试点编号 ? ? 测试点编号 ? ?
1 100 2 11 100 14
2 100 2 12 100 15
3 100 3 13 10 16
4 100 3 14 10 17
5 100 4 15 10 18
6 100 4 16 10 19
7 100 10 17 10 20
8 100 11 18 10 21
9 100 12 19 10 22
10 100 13 20 10 23
数据保证:所有的手牌都是随机生成的。

题解:
狠了狠心还是自己手打了一遍。

这个题的思路并不复杂。

我的错主要在于分情况不清晰。

应该分为顺子,带牌,然后单独。(单独出牌直接判断是否有牌,因为1,2,3,4都可以直接打出去的!!!))。

然后注意一些细节,比如a比k大,a应该在k之后什么的。

 

转载于:https://www.cnblogs.com/xxmxxm/p/11152223.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值