【dfs+贪心】【cofun1624】斗地主

本文介绍了斗地主比赛题目的解决方案,通过DFS搜索配合贪心策略来确定最佳出牌顺序。在分析中,将王炸视为对子,并忽略花色,重点讨论如何构建顺子以减少出牌次数。给出了剪枝和贪心出牌的思路,并提供了代码片段作为示例。
摘要由CSDN通过智能技术生成

【cofun1624】斗地主

Description
这里写图片描述

Input Format
输入文件名为 landlords.in。
第一行包含用空格隔开的2个正整数T,n,表示手牌的组数以及每组手牌的张数。
接下来T组数据,每组数据n行,每行一个非负整数对ai,bi,表示一张牌,其中ai表示牌的数码,bi表示牌的花色,中间用空格隔开。特别的,我们用 1 来表示数码 A,11 表示数码 J,12 表示数码 Q,13 表示数码 K;黑桃、红心、梅花、方片分别用 1-4 来表示;小王的表示方法为 0 1,大王的表示方法为 0 2。
Output Format
输出文件名为 landlords.out。 共 T 行,每行一个整数,表示打光第i组手牌的最少次数。

Sample Input
【输入样例 1】
1 8
7 4
8 4
9 1
10 4
11 1
5 1
1 4
1 1
【输入样例 2】
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
5 2
12 4
2 2
7 2
Sample Output
输出样例 1
3
输出样例 2
6
【输入输出样例 1 说明】
共有 1 组手牌,包含 8 张牌:方片7,方片8,黑桃9,方片10,黑桃J,黑桃5,方片A 以及黑桃A。可以通过打单顺子(方片7,方片8,黑桃9,方片10,黑桃J),单张牌(黑桃5)以及对子牌(黑桃A 以及方片A)在3次内打光。

Hint
这里写图片描述


  • 分析:
    可以把王炸视为对子,因此花色与问题本身并无关系,牌类种数<=14。
    显然只有顺子对出牌顺序产生影响,而三张、对子、单张可以贪心出最少的出牌数。
    考虑爆搜+剪枝。

    1. dfs减去顺子.
    2. 剪枝中贪心出其他的出牌数,加上当前步数若> ans,则直接 return.
      具体实现见代码→

  • 代码:
#include <bits/stdc++.h>
 using namespace std
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值