【NOIp 2015】【DFS】斗地主

题面

自己网上去搜吧…

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#define INF 10000000
#define maxn 40
using namespace std;int t,n,temp,a,zhang[maxn],ans=INF;void dfs(int,int,int,int);
void shunzi(int,int,int,int,int);void chu(int x,int dep,int left){//在第dep手牌的时候出x号牌,还剩left张牌 if(x>14) return;if(dep>ans) return;//如果比当前最优解差就跳出 if(left==0){ ans=min(ans,dep); return; }//如果剩下的手牌为0,记录答案 if(zhang[x]==0) chu(x+1,dep,left);//如果x号牌出完了就该出x+1号牌 else for(int i=zhang[x];i>0;i--) dfs(x,i,dep,left);//搜索第x号牌出1~出完的情况 return;
}void dfs(int p,int shu,int dep,int left){//第p张牌出shu张,出了dep手牌,剩下left张牌 if(shu==4){zhang[p]-=4;chu(p,dep+1,left-4);//出炸弹//出四带二(四带一对,四带两对,四带两张) for(int i=p+1;i<=14;i++){if(zhang[i]>=1){zhang[i]--;for(int j=p+1;j<=14;j++){if(zhang[j]>=1){zhang[j]--;chu(p,dep+1,left-6);zhang[j]++;}}zhang[i]++;}}//四带两张或一对 for(int i=p+1;i<=14;i++){for(int j=i+1;j<=14;j++){if(zhang[i]>=2&&zhang[j]>=2){zhang[i]-=2; zhang[j]-=2;chu(p,dep+1,left-8);zhang[i]+=2; zhang[j]+=2;}}}//四带两对zhang[p]+=4;return;}else if(shu==3){zhang[p]-=3;//出三顺子if(p>2){for(int i=p+1;i<=14;i++){if(zhang[i]<3) break;else shunzi(p,i,3,dep,left);}}//出三带二for(int i=p+1;i<=14;i++){if(zhang[i]>=2){zhang[i]-=2;chu(p,dep+1,left-5);zhang[i]+=2;}} //出三带一for(int i=p+1;i<=14;i++){if(zhang[i]>=1){zhang[i]-=1;chu(p,dep+1,left-4);zhang[i]+=1;}}chu(p,dep+1,left-3);zhang[p]+=3; return;}else if(shu==2){zhang[p]-=2;//出双顺子if(p>2&&zhang[p+1]>=2&&zhang[p+2]>=2) for(int i=p+2;i<=14;i++){if(zhang[i]<2){break;}else shunzi(p,i,2,dep,left);}//出四带两对for(int i=p+1;i<=14;i++){if(zhang[i]>=4){zhang[i]-=4;chu(p,dep+1,left-6); //四带一对 for(int j=p+1;j<=14;j++){if(zhang[j]>=2){zhang[j]-=2;chu(p,p+1,left-8);zhang[j]+=2;}}zhang[i]+=4;}}//出三带二for(int i=p+1;i<=14;i++){if(zhang[i]>=3){zhang[i]-=3;chu(p,dep+1,left-5);zhang[i]+=3;}}//出单对chu(p,dep+1,left-2);zhang[p]+=2; return;}else if(shu==1){zhang[p]-=1;//出顺子if(p>2&&p<11&&zhang[p+1]>=1&&zhang[p+2]>=1&&zhang[p+3]>=1&&zhang[p+4]>=1){//因为大小王不能进顺子所以p<11 for(int i=p+4;i<=14;i++){if(zhang[i]<1){break;}else shunzi(p,i,1,dep,left);}}//出四带两张单牌for(int i=p+1;i<=14;i++){if(zhang[i]>=4){zhang[i]-=4;for(int j=p+1;j<=14;j++){if(zhang[j]>=1){zhang[j]-=1;chu(p,dep+1,left-6);zhang[j]+=1;}}zhang[i]+=4;}}//出三带一for(int i=p+1;i<=14;i++){if(zhang[i]>=3){zhang[i]-=3;chu(p,dep+1,left-4);zhang[i]+=3;}} //出单张chu(p,dep+1,left-1);zhang[p]+=1;return;}return;
}void shunzi(int x,int y,int type,int dep,int left){//从第x到y张牌开始出顺子,出type种顺子 for(int i=x+1;i<=y;i++) zhang[i]-=type;chu(x,dep+1,left-type*(y-x+1));for(int i=x+1;i<=y;i++) zhang[i]+=type;return;
}int main(){freopen("landlords.in","r",stdin);freopen("landlords.out","w",stdout);scanf("%d%d",&t,&n);while(t--){memset(zhang,0,sizeof(zhang));ans=INF;for(int i=1;i<=n;i++) {scanf("%d%d",&a,&temp);if(a==1) zhang[14]++;else zhang[a]++;}chu(0,0,n);printf("%d\n",ans);}return 0;
}//hcy太强辣~\(≧▽≦)/~啦啦啦 

转载于:https://www.cnblogs.com/leotan0321/p/6081376.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]从入门到精通,Java学习路线导航

引言 最近也有很多人来向我"请教"&#xff0c;他们大都是一些刚入门的新手&#xff0c;还不了解这个行业&#xff0c;也不知道从何学起&#xff0c;开始的时候非常迷茫&#xff0c;实在是每天回复很多人也很麻烦&#xff0c;所以在这里统一作个回复吧。 Java学习路线…

如何让 Dapper 支持 DateOnly 类型

前言在上次的文章中&#xff0c;我们让 EF Core 6 支持了 DateOnly 类型。那么&#xff0c;Dapper 是否支持 DateOnly 类型呢&#xff1f;public class User {public int Id { get; set; }public string Name { get; set; }public DateOnly Birthday { get; set; } }using (var…

HP proliant服务器从usb启动

1&#xff0c;开机出现自检画面开始按F9进入设置&#xff0c;进入BIOS 选择standard boot order&#xff08;rpl&#xff09;&#xff0c;把usb driver放在第一位&#xff0c;保存好 2&#xff0c;按F1开始启动。 &#xff08;注&#xff1a;我使用ubuntu14.04&#xff0c;到启…

VB常用内部函数大全一览表(建议收藏)

VB提供了大量的内部函数供用户在编程时调用。内部函数按其功能分为数学运算函数、字符串函数、转换函数、日期与时间函数、判断函数和格式输出函数等。 文章目录 算术函数字符串函数日期和时间函数数据类型转换函数算术函数 字符串函数 日期和时间函数

数据库分类介绍

在当今的互联网中&#xff0c;最常见的数据库模型主要是两种&#xff0c;即“关系型数据库”和“非关系型数据库”。 一、关系型数据库 1、关系型数据库的由来 虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题&#xff0c;但是在数据库独立性和抽象级别上扔有…

BZOJ 1717 [Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组)

【题目链接】http://www.lydsy.com/JudgeOnline/problem.php?id1717 【题目大意】 求一个最长的串&#xff0c;使得其在母串中出现的次数达到要求 【题解】 二分答案&#xff0c;利用后缀数组求出的height数组进行检验 【代码】 #include <cstdio> #include <cstring…

记一次 .NET 某物管后台服务 卡死分析

一&#xff1a;背景 1. 讲故事这几个月经常被朋友问&#xff0c;为什么不更新这个系列了&#xff0c;哈哈&#xff0c;确实停了好久&#xff0c;主要还是打基础去了&#xff0c;分析 dump 的能力不在于会灵活使用 windbg&#xff0c;而是对底层知识有一个深厚的理解&#xff0c…

【C#程序设计】教学讲义——第三章:C#语言基础

完整C#教学课件系列: 【C#程序设计】教学讲义——第一章:C#语言概述 【C#程序设计】教学讲义——第二章:简单C#程序设计 【C#程序设计】教学讲义——第三章:C#语言基础 文章目录 3.1 C#程序结构3.2 变量和常量3.3 常用数据类型3.4 运算符和表达式3.1 C#程序结构 3.1.1 组成…

直接在script里面换样式IE6,7,8不兼容

1 <!DOCTYPE HTML>2 <html>3 <head>4 <meta http-equiv"Content-Type" content"text/html; charsetutf-8">5 <title>无标题文档</title>6 </head>7 8 <body>9 10 <input id"inp1" type&quo…

C语言试题111之 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时 共有 5 个数相加),几个数相加有键盘控制。

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目: s=a+aa+aaa+aaaa+aa…a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时 共…

Redis常用配置参数详解及查看修改命令

目录 Redis常用配置参数 Redis配置参数查看命令 语法 举例 说明&#xff1a; Redis配置参数修改命令 语法 举例 说明&#xff1a; Redis常用配置参数 序号配置项说明1daemonize noRedis 默认不是以守护进程的方式运行&#xff0c;可以通过该配置项修改&#xff0c;使…

反射封装工具类-----零SQL插入

V_1.0 需求&#xff1a;开发一个工具方法&#xff0c;辅助初级程序员在不需要掌握sql命令和JDBC的情况下&#xff0c;实现对数据库的插入操作。 V_4.0 实现0sql插入操作需要解决的问题. 1. 如何确认当前【陌生对象】关联的【表名】 2. 如何确认当前表中需要添加数据的字段 3. …

MathType插入带序号公式的两种方法

方法一&#xff1a; 由于我之前使用表格15% 70% 15%来布局的&#xff0c;所以最开始相的就是如何录入公示后插入公式序号&#xff0c;如下图所示 先设置序号格式 录好公式后点“Insert Number”就好了&#xff0c;这样的话需要紧挨着公式&#xff0c;用空格把他空到最右侧就好了…

数据结构算法:基于C#语言用图实现最短路径,太妙了!

文章目录 构造类并实现最短路径方法设计界面编写程序测试新的Graph类构造类并实现最短路径方法 在前面的C#编程中,我们已经完成了诸如遍历、最小生成树等许多方法,这个类已经可以完成诸如邻接矩阵输入、顶点矩阵输入问题。这个类在Graph2.cs中。 现在,我们新建立一个WINDOW…

【系统设计】邻近服务

在本文中&#xff0c;我们将设计一个邻近服务&#xff0c;用来发现用户附近的地方&#xff0c;比如餐馆&#xff0c;酒店&#xff0c;商场等。设计要求 从一个小明去面试的故事开始。面试官&#xff1a;你好&#xff0c;我想考察一下你的设计能力&#xff0c;如果让你设计一个…

[转]Redis持久化存储(AOF与RDB两种模式)

Redis中数据存储模式有2种&#xff1a;cache-only,persistence; cache-only即只做为“缓存”服务&#xff0c;不持久数据&#xff0c;数据在服务终止后将消失&#xff0c;此模式下也将不存在“数据恢复”的手段&#xff0c;是一种安全性低/效率高/容易扩展的方式&#xff1b;pe…

C语言试题112之一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如 6=1+2+3.编程 找出 1000 以内的所有完数。

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如 6=1+2+3.编程 找出 …

关于jstl.jar引用问题及解决方法

在前文SSM说到因为从MyEclipse换成了Eclipse。有些架包自动缺失。 造成&#xff1a;"org.apache.jasper.JasperException: This absolute uri (http://java.sun.com/jsp/jstl/core ) cannot be resolved in either web.xml or the jar files deployed with this applicati…

网络技术基础与计算思维实验教程_2.3_单交换机VLAN配置实验

2.3.1 实验内容 2.3.2实验目的 实验的目的一是验证交换机 VLAN 配置过程; 二是验证属于同一 VLAN的终端之间的通信过程; 三是验证每一个 VLAN 为独立的广播域; 四是验证属于不同 VLAN的两个终端之间不能通信; 五是验证转发项和 VLAN的对应关系。 2.3.3实验原理 默认情况下,交换…

【数据库原理及应用】经典题库附答案(14章全)——第一章:数据库基础知识

【数据库原理及应用】经典题库附答案&#xff08;14章全&#xff09;——第一章&#xff1a;数据库基础知识 【数据库原理及应用】经典题库附答案&#xff08;14章全&#xff09;——第二章&#xff1a;关系数据库知识 【数据库原理及应用】经典题库附答案&#xff08;14章全&a…