蓝桥杯 牌型种数 DFS
牌型种数
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
请填写该整数,不要填写任何多余的内容或说明文字。
思路:dfs //结果:3598180,比赛得到这么大的答案,也不敢填T^T
相当于有13个桶,每个桶里面最大取4
从第一个桶开始取,取值0~4,达到数目13,跳出,达不到,判断是否越界。未越界,那么就接着搜索,从下一桶开始艘。
//有人来问,可能我解释的不太清楚,所以回来补充了QAQ
一共是52张牌,不算花色的话就是13种类型,我用0~12来编号。然后0~12个桶里面每个桶都有4张花色不同的牌。程序从第0号桶开始搜索,当前没有选取牌,所以此时选出牌的数量就是0。dfs()函数中的参数pos代表当前搜索到哪个桶,cnt表示已经选取出来的牌数。先不考虑递归出口。跳过dfs中两个if判断。num取得是4和13-cnt中的小值。因为当前桶还没有选取最多有4张牌。但是需要注意的是,假如搜到当前位置时选出来的牌数已经达到了11张,而我们每人只能够拿走13张牌,所以当前位置我们最多只能再选取两张。一个是2,一个是4,很明显,当前桶可取的数量一定会选取较小的数值当作实际容量。再下一个for循环中我们需要做的就是确定当前桶中要拿走的数量,一张一张拿,再去搜下一个位置。当我们搜下一个位置时发现我们手中的牌已经达到了13张,那么祝贺你,已经搜寻到了一种可行方案,总方案数sum++,然后return。如果当前牌数没有到达13张,但是搜寻的位置到了13号桶,对不起我家没有那么多桶(注意程序中是从0开始编号的),此刻直接返回上一个位置和牌数,搜寻下一个可行方案。
因为整个都是按找顺序搜寻的,桶的位置从0到12,手中的牌一张一张递增,所以不会出现重复的方案。要是还不明白,就线照着程序在纸上画一画就懂了。T^T。
代码:
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
int sum=0;
void dfs(int pos, int cnt){
if(cnt==13){
sum++;
return;
}
if(pos==13){
return;
}
int num=min(13-cnt,4);//min取两者中的小值
for(int i=0;i<=num;i++){
dfs(pos+1,cnt+i);
}
return;
}
int main(){
dfs(0,0);
printf("%d\n",sum);
return 0;
}
蓝桥杯 牌型种数 DFS的更多相关文章
- java实现第六届蓝桥杯牌型整数
牌型整数 题目描述 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不 ...
- 牌型种数|2015年蓝桥杯B组题解析第七题-fishers
牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得 ...
- 蓝桥杯比赛javaB组练习《牌型种数》
牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌.一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张.这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌 ...
- 牌型种数-dfs-蓝桥杯2015
牌型种数 牌型种数 小明被劫持到 X 赌城,被迫与其他 3 人玩牌. 一副扑克牌(去掉大小王牌,共 52 张),均匀发给 4 个人,每个人 13 张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花 ...
- java 牌型种数
牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得 ...
- 第6届蓝桥杯javaA组第7题,牌型种数,一道简单的题带来的思考
题目: 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得到 ...
- 蓝桥杯省赛 牌型种数java
小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张.这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺 ...
- 蓝桥杯---数独(模拟 || dfs)
[编程题](满分33分) "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数 学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6 ...
- java实现第八届蓝桥杯树型显示
树型显示 题目描述 对于分类结构可以用树形来形象地表示.比如:文件系统就是典型的例子. 树中的结点具有父子关系.我们在显示的时候,把子项向右缩进(用空格,不是tab),并添加必要的连接线,以使其层次关 ...
随机推荐
- LeetCode 163. Missing Ranges (缺失的区间)$
Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...
- 媲美jQuery的JS框架----AngularJS(二)
前言 对于AngularJS什么,小编在这就不多做介绍了.大家可以看小编的上一篇博客. 言归正传,小编在上一篇博客中介绍了AngularJS中的指令.表达式还有非常实用的三种服务.接下来,带大家看一看 ...
- Ajax通过FormData上传文件
1.使用<form>表单初始化FormData对象方式上传文件 HTML代码 <form id="uploadForm" enctype="multip ...
- Flex 基础语法(一)
任何一个容器都可以指定为Flex布局. .box{ display: flex; } 行内元素也可以使用Flex布局. .box{ display: inline-flex; } Webkit内核的浏 ...
- <template> 标签
<template> 元素,用于描述一个标准的以 DOM 为基础的方案来实现客户端模板.该模板允许你定义一段可以被转为 HTML 的标记,在页面加载时不生效,但可以在后续进行动态实例化.( ...
- 用cmd命令创建oracle 数据库、用户和表空间
Win+R调查运行窗口,输入cmd回车 连接到本地oracle库 创建名为"SXSJ"的表空间,其初始大小为512M,支持自动扩展,每次增量为32M: create tablesp ...
- 关于隐藏元素高度的问题 css visibility:hidden 与 display:none的区别
其实这是一个老问题了,s visibility:hidden 与 display:none 共同点就是都会似的元素不可见.但是 visibility:hidden 的DOM元素是占用空间的,会挤占其他 ...
- The Speed 歌词
[ti:]The Speed [ar:]<QQ飞车> [al:]幻想 [by:]伴奏:My Soul [00:03.60]The Speed [00:07.06]<QQ飞车> ...
- 淘宝联盟api调用笔记
一.流程及主要请求接口 每日凌晨1点开始,服务器定时自动请求淘宝联盟数据,请求完毕之后,执行一个存储过程对数据进行整理,删除过期...购买数量<...的商品......,请求接口分别有(tbk_ ...
- 【Win 10 应用开发】UI Composition 札记(五):灯光
UI Composition 除了能够为 UI 元素建立三维空间外,还有相当重要的一个部件——灯光.宇宙万物的精彩缤纷,皆源于光明,光,使我们看到各种东西,除了黑洞之外的世界都是五彩斑谰的.故而,真要 ...