这题想必大家看到都知道是个dfs搜索问题...

怎么构建思路呢?题目给了我们方向了,一个是顺子,还有一个是刻子,我们分别进行顺子和刻子的判断即可,这就是两个回溯的操作。

我们如何开始呢?可以对1-9中的每一个牌(已有的个数要小于4),加一张进去看成功和牌么,如果和了就输出。

判断赢牌的思路就是先把雀头拿出来,然后进行dfs。

这里阅读了一篇博客:

雀魂启动!(暴力回溯)_浮生之居士的博客-CSDN博客

其实回溯我自己踩了个坑,代码如下所示:

#include <bits/stdc++.h>
using  namespace std;
int state[10];
int rec;
bool dfs(int state[], int n){if (n==0) return true;for (int i = 1; i <= 9; ++i) {if (state[i]>=3){state[i]-=3;if (dfs(state, n-3)){rec=1;}state[i]+=3;}if (rec) return true;if (i>=1&&i<=7&&state[i]>0&&state[i+1]>0&&state[i+2]>0){state[i]--;state[i+1]--;state[i+2]--;if (dfs(state, n-3)){rec=1;}state[i]++;state[i+1]++;state[i+2]++;}if (rec) return true;}return false;
}bool isWin(int state[]){for (int i = 1; i <= 9; ++i) {if (state[i]>=2){state[i]-=2;rec=0;dfs(state, 12);state[i]+=2;if (rec){return true;}//注意回溯一定要在dfs之后立马回溯 如果放在这个位置有可能减了然后提前返回导致state数目错误}}return false;
}int main() {memset(state,0,sizeof(state));for (int i = 0; i < 13; ++i) {int tmp;cin>>tmp;state[tmp]++;}int flag=0;for (int i = 1; i <= 9; ++i) {if (state[i]>=4){continue;}state[i]++;if (isWin(state)){if (!flag){cout<<i;}else{cout<<" "<<i;}flag=1;}state[i]--;}if (!flag){cout<<0;}cout<<endl;return 0;
}

牛客网:字节19研发:雀魂启动相关推荐

  1. 牛客网--字节跳动面试题--雀魂启动

    牛客网--字节跳动面试题--雀魂启动 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 来源 链接:雀魂启动 来源:牛客网 题目 ...

  2. 字节跳动java笔试题目_牛客网--字节跳动面试题--特征提取

    牛客网--字节跳动面试题--特征提取 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 来源 链接:特征提取 来源:牛客网 题目 ...

  3. 牛客网--蘑菇街2016研发工程师编程题

    牛客网--蘑菇街2016研发工程师编程题 第一题: 搬圆桌 时间限制:1秒 空间限制:32768K 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1).每次移动一步 ...

  4. Java算法:牛客网字节跳动笔试真题算法Java版1-27题

    题号 题目 知识点 难度 通过率 ZJ1 附加题 动态规划数组 中等 16.45% ZJ2 编程题1 贪心 中等 11.65% ZJ3 编程题2 字符串贪心 中等 29.30% ZJ4 附加题 递归模 ...

  5. 【STL容器使用案例】雀魂启动 (map容器\[]重载)

    牛客上的一题: 雀魂启动 看了大佬的dfs用的是两个vector容器(一个计数,一个计牌,还要排序) #include <bits/stdc++.h> using namespace st ...

  6. 今日头条后端面经总结(2018.12月)(转自牛客网)

    面经(后端): 一 操作系统中的进程和线程还有虚拟存储. 计算机网络TCP和UDP仔细看一下,也不要放过滑动窗口; 还有计算机网络体系结构各层都要熟悉. lambda表达式 spring 智力题,比如 ...

  7. 2021字节跳动秋招整理牛客网---Java后端提前批面试

    一.字节提前批 java 后端一面 1.1 你说你用了 RPC 远程调用,讲讲原理是怎么样的 RPC(Remote Procedure Call)远程调用,通过某种手段,协议,约定调用非本地服务 RP ...

  8. 字节题--雀魂启动!

    雀魂启动!_字节跳动2019春招研发部分编程题汇总_牛客网 输入是13个数字,统计每个数字出现的次数,根据题意,次数最大为4,而出现的数字种类在4~9之间,和牌方式有两种,均需要一个雀头(2张一样的牌 ...

  9. 牛客网 --java问答题

    http://www.nowcoder.com/ 主要是自己什么都不怎么会.在这里可以学习很多的! 第一天看题自己回答,第二天看牛客网的答案! 1 什么是Java虚拟机?为什么Java被称作是&quo ...

最新文章

  1. 一文看懂谷歌的AI芯片布局,边缘端TPU将大发神威
  2. 学python需要英语基础吗-英语基础一般,如何才能学习C语言编程和Python
  3. 微信小程序 - vant popup弹出层阻止底层页面滑动
  4. 实现类似表格内容动态滚动效果
  5. Dataset之JFT:JFT/FastEval14k数据集的简介、下载、案例应用之详细攻略
  6. 微信小程序开发系列二:微信小程序的视图设计
  7. ASP.NET Core中的OWASP Top 10 十大风险-失效的访问控制与Session管理
  8. 工业交换机都有哪些优势,该如何挑选
  9. Linux下使用socket传输文件的C语言简单实现
  10. oracle怎么以时间排序,oracle指定数据排序在前面怎么处理
  11. Reset Password 重置密码 (CentOS 5,6,7 ; Juniper Networks: SRX100 )
  12. 《飞秋2010下载》的开头说
  13. python循环括号_Python3中小括号()、中括号[]、花括号{}的区别详解
  14. Spring Boot学习总结(30)—— Spring Native 初体验
  15. sms 2003 Service Pack 3 Open Beta
  16. findwindowex子窗口类型有哪几种_游戏场景该怎么画?来参考一下不同的类型吧
  17. awk编程之数组、控制流(长期更新)
  18. Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现
  19. DXL之通过程序修改Domino的设计
  20. Echarts 图表生成渐变色方法

热门文章

  1. 问题 A: C语言11.1——完成一个对候选人得票的统计程序。
  2. 新浪微博验证码接口短信轰炸的防护攻略
  3. 智能助手Alexa劝人自杀?详谈那些“恐怖”的人工智能
  4. FSK非相干解调的原理
  5. cas server的使用
  6. 视频下载(无意间不知道在哪里收藏的,我自己没有下载过,也没有测试过,如果你确实有需要下载下面的视频,就试试吧。如果下载不了也别扔石头。)
  7. Taro-ui 常用 UI 组件库说明
  8. 【数据集】中国各类水文专业常用数据集合集
  9. 营改增后计算机维修费税率,软件行业的维修费税率是多少?
  10. A7799之STM32程序——STM32测试高精度ADC篇(二)