回溯法:雀魂启动!
题目链接:雀魂启动!_牛客题霸_牛客网
题解:
回溯法
1、用哈希思想构建映射表,标记已有的卡的种类和个数
2、遍历卡池,先从卡池中抽一张卡,因为只能抽一张卡,所以一种卡只判断一次
3、抽到卡后找雀头 -- 遍历已有卡,使用穷举法,如果手中有一种卡的数量达到两张,选其作为雀头
4、找到雀头后找顺子和刻子 -- 再次遍历已有卡,如果手中有一种卡的数量达到三张,选其作为刻子;如果有三种卡是连号,选其作为顺子
5、如果全部配对完后手里的卡没了,那么恭喜你和牌;如果手中还有牌剩余,那就回溯重新找
有很多细节思路中没提到,代码中都有注释,求一个赞!!
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;vector<int> res;bool is_valid(vector<int>& cards) {//继续穷举for (int i = 1; i <= 9; i++) {//先找顺子if (cards[i] >= 3) {cards[i] -= 3;//递归,如果剩余的牌能够和牌,返回true//递归,如果剩余的牌能够和牌,返回trueif (is_valid(cards)) {//回溯cards[i] += 3;return true;}//回溯cards[i] += 3;}//再找刻子if (i <= 7 && cards[i] > 0 && cards[i + 1] > 0 && cards[i + 2] > 0) {cards[i]--;cards[i + 1]--;cards[i + 2]--;//递归,如果剩余的牌能够和牌,返回trueif (is_valid(cards)) { //回溯cards[i]++;cards[i + 1]++;cards[i + 2]++;return true; }//回溯cards[i]++;cards[i + 1]++;cards[i + 2]++;}}//走到这里有两种可能:// 1、有剩下的牌 -- 无法和牌返回false// 2、没剩下牌 -- 和牌返回truefor (int i = 1; i <= 9; i++) {if (cards[i] > 0) {return false;}}return true;
}bool head(vector<int>& cards) {//如果有两张一样的牌,先尝试作为雀头for (int i = 1; i <= 9; i++) {if (cards[i] >= 2) {cards[i] -= 2;//再用递归回溯从,剩余牌中找顺子和刻子,如果能和牌,代表这次抽取成功,打印记录if (is_valid(cards)) {//回溯 -- 这里return了就不走到70行回溯,那么找下一种组合的时候就会少两张牌,大漏洞cards[i] += 2;return true;}//回溯cards[i] += 2;}}//走到这代表没有雀头,寄return false;
}void check(vector<int>& cards) {//抽一张,穷举法for (int i = 1; i <= 9; i++) {//如果有一张牌的数量小于4,代表可以抽这张牌,进行穷举if (cards[i] < 4) {//抽取cards[i]++;//继续穷举选择雀头if (head(cards)) {res.push_back(i);}//回溯cards[i]--;}}
}int main() {//哈希表存放已有的牌vector<int> cards(10);//抽取13张牌for(int i=0;i<13;i++){int n;cin>>n;cards[n]++;}//回溯法检查和牌check(cards);//防止顺序不一样,排下序 -- res是全局变量,懒得传参了sort(res.begin(),res.end());for(auto v : res){cout << v <<" ";}return 0;}
相关文章:
回溯法:雀魂启动!
题目链接:雀魂启动!_牛客题霸_牛客网 题解: 回溯法 1、用哈希思想构建映射表,标记已有的卡的种类和个数 2、遍历卡池,先从卡池中抽一张卡,因为只能抽一张卡,所以一种卡只判断一次 3、抽到卡后找…...
新的iLeakage攻击从Apple Safari窃取电子邮件和密码
图片 导语:学术研究人员开发出一种新的推测性侧信道攻击,名为iLeakage,可在所有最新的Apple设备上运行,并从Safari浏览器中提取敏感信息。 攻击概述 iLeakage是一种新型的推测性执行攻击,针对的是Apple Silicon CPU和…...
Java练习题2021-1
"从大于等于N的正整数里找到一个最小的数M,使之满足: M和M的逆序数(如1230的逆序数为321)的差的绝对值为一个[100000,200000]区间内的值。 输入说明:起始数字N; 输出说明:找到的第一个符合…...
微信小程序input输入字母自动转大写不生效问题解决
uniapp中开发的小程序,采用 style"text-transform:uppercase" H5中正常小写变大写,编译小程序后不生效 解决办法 uniapp中 input增加 input"TransFormationsFn" <input type"text" value"" input"…...
jmeter报Java.NET.BindException: Address already in use: connect
1、windows10和window11上: 修改注册表的内容: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters: 新建dword(值)的类型: MaxUserPort 65334 TcpTimedWaitDelay 30window...
2023手工测试转自动化测试后,薪资可以达到多少?
目前手工测试工作了8个月,现已辞职在家学习全栈自动化测试的课程中,之前想着学完后工资期望7.5k,开发朋友说太少了 ,想了解下这样的情况在日后找工作,薪资可以达到多少? 说到底,软件测试是技术…...
01 _ 为什么要学习数据结构和算法?
今天我们就来详细聊一聊,为什么要学习数据结构和算法。 想要通关大厂面试,千万别让数据结构和算法拖了后腿 很多大公司,比如BAT、Google、Facebook,面试的时候都喜欢考算法、让人现场写代码。有些人虽然技术不错,但每…...
C语言 每日一题 PTA 10.27 day5
1.高速公路超速处罚 按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10 % 则处200元罚款; 若达到或超出50 % ,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。 输入格式 : 输入在一行中给出2个正…...
Unity Shader当用户靠近的时候会出现吃鸡一样的光墙
效果图片 靠近墙壁 远离墙壁 材质球的设置 两张图片 使用方式 把这个脚本放到墙上,将player赋值给"_player",然后运行,用户靠近就会根据距离显示光墙。 using UnityEngine;public class NewBehaviourScript : MonoBehaviour {pr…...
Xcode iOS app启用文件共享
在info.plist中添加如下两个配置 Supports opening documents in place Application supports iTunes file sharing 结果都为YES,如下图所示: 然后,iOS设备查看,文件->我的iPhone列表中有一个和你工程名相同的文件夹出现&…...
STM32H750之FreeRTOS学习--------(二)任务的创建和删除
FreeRTOS 二、任务的创建和删除 任务创建 动态方式创建任务 BaseType_t xTaskCreate ( TaskFunction_t pxTaskCode, /* 指向任务函数的指针 */ const char * const pcName, /* 任务名字,最大长度configMAX_TASK_NAME_LEN */const configSTACK_…...
Kafka - 3.x Producer 生产者最佳实践
文章目录 生产经验_生产者提高吞吐量核心参数Code 生产经验_数据可靠性消息的发送流程ACK应答机制ack应答级别应答机制 小结Code 生产经验_数据去重数据传递语义幂等性幂等性原理开启幂等性配置(默认开启) 生产者事务kafka事务原理事务代码流程 生产经验…...
对于多分类问题,使用深度学习(Keras)进行迁移学习提升性能
本文是仿照前面的文章,使用Keras迁移学习提升性能,原文是针对二分类问题,使用迁移学习的方式来提升准确率,本文用迁移学习的方式来提升多分类问题的准确率。 同时,在前面的文章中,使用普通的小型3层卷积网络+2层全连接层实现了多分类的85%左右的准确率, 此处将用迁移学…...
Python----break关键字对while...else结构的影响
案例: 女朋友生气,要求道歉5遍:老婆大人,我错了。道歉到第三遍的时候,媳妇埋怨这一遍说的不真诚,是不是就是要退出循环了?这个退出有两种可能性: ① 更生气,不打算原谅…...
js实现将文本生成二维码(腾讯云cos)
示例 页面代码 import { getQCodeUrl } from /utils/cosInstance; import { PageContainer } from ant-design/pro-components; import { Access, useAccess } from umijs/max; import { Button, Image } from antd; import { useState } from react;const AccessPage: Reac…...
机架式服务器介绍
大家都知道服务器分为机架式服务器、刀片式服务器、塔式服务器三类,今天小编就分别讲一讲这三种服务器,第一篇先来讲一讲机架式服务器的介绍。 机架式服务器定义:机架式服务器是安装在标准机柜中的服务器,一般采用19英寸的标准尺寸…...
解决github有时能访问有时不能访问的问题2
下载地址 https://steampp.net/...
Go实现网络通信
Go 语言提供了强大的网络编程能力,包括 TCP、UDP、HTTP、WebSocket 等协议的支持。下面是 Go 语言中常用的网络操作: TCP 通信 使用 net 包进行 TCP 通信,可以创建 TCP 客户端和服务器。 客户端使用 net.Dial 方法连接到指定的 TCP 地址&am…...
在antd里面渲染MarkDown并且自定义一个锚点目录TOC(重点解决导航目录不跟随文档滚动的问题)
一、整体思路 由于有很多很长的文档需要渲染,我觉得用MarkDown的方式会比较适合管理,所以这两天测试了一下在antd里面集成MarkDown的渲染模块。 总体思路参考: https://blog.csdn.net/Sakuraaaa_/article/details/128400497 感恩大佬的倾情付…...
Linux MMC子系统 - 2.eMMC 5.1总线协议浅析
By: Ailson Jack Date: 2023.10.27 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:http://www.only2fire.com/archives/161.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。…...
Ollama+Qwen2.5-VL搭建教程:打造你的智能视觉分析工具
OllamaQwen2.5-VL搭建教程:打造你的智能视觉分析工具 1. 引言:为什么选择Qwen2.5-VL 在当今AI技术快速发展的时代,视觉-语言多模态模型正成为解决复杂问题的关键工具。Qwen2.5-VL-7B-Instruct作为通义千问系列的最新成员,在视觉…...
告别格式枷锁:ncmdumpGUI让音乐自由播放变得触手可及
告别格式枷锁:ncmdumpGUI让音乐自由播放变得触手可及 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 开篇痛点直击:那些被NCM格式困住的…...
AI赋能51单片机开发:让快马平台智能生成复杂避障算法代码
最近在做一个基于51单片机的智能小车项目,需要实现复杂的避障功能。传统开发方式需要手动编写大量底层代码,调试起来特别耗时。不过这次尝试用InsCode(快马)平台的AI辅助功能,整个过程顺利了很多。 需求分析阶段 首先需要明确小车的核心功能&…...
MedGemma 1.5新手必看:从安装到问诊,完整使用流程详解
MedGemma 1.5新手必看:从安装到问诊,完整使用流程详解 你是否曾面对一份复杂的化验单,需要快速理解其临床意义?是否在深夜值班时,想快速确认某个药物的相互作用?或者,作为一名医学生࿰…...
电话号码定位开源工具实战完全指南:从部署到企业应用
电话号码定位开源工具实战完全指南:从部署到企业应用 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirro…...
Wan2.1视频生成小白必看:避开这些坑,让你的视频生成一次成功
Wan2.1视频生成小白必看:避开这些坑,让你的视频生成一次成功 1. 为什么你的视频生成总是失败? 很多新手第一次使用Wan2.1视频生成模型时,都会遇到各种问题:生成的视频模糊不清、内容与描述不符、甚至直接失败。这通常…...
Qwen3-ASR-0.6B效果展示:金融客服录音(专业术语+缩略语)识别术语表匹配
Qwen3-ASR-0.6B效果展示:金融客服录音(专业术语缩略语)识别术语表匹配 金融客服电话录音里,客户和坐席的对话常常像在说“天书”。一会儿是“LPR”,一会儿是“T0”,还有各种产品代码和内部术语。把这些录音…...
华为欧拉系统(openEuler 22.03 LTS)上,用Docker Compose V2部署你的第一个微服务项目
华为欧拉系统实战:用Docker Compose V2部署微服务全流程指南 在国产操作系统浪潮中,华为欧拉(openEuler)正成为企业级应用的新选择。当开发者需要在ARM架构的欧拉系统上部署现代微服务时,Docker Compose V2提供了轻量级…...
STM32F407实战:基于CubeMX与FreeRTOS的SDIO-FatFs文件系统高效读写方案
1. 环境准备与CubeMX基础配置 第一次接触STM32F407的SD卡存储时,我被各种专业术语搞得晕头转向。后来发现,只要用对工具和方法,实现文件系统读写其实没那么复杂。CubeMX这个图形化配置工具真是开发者的福音,它能帮我们自动生成80%…...
RTL8201F PHY芯片替换调试:从时钟异常到Ping通实战
1. 低成本PHY芯片替换的背景与挑战 最近接手了一个嵌入式以太网项目,甲方对成本控制非常严格,要求我们把原本使用的LAN8742 PHY芯片替换成更便宜的RTL8201F。这个需求听起来简单,但实际操作起来却遇到了不少坑。RTL8201F确实便宜不少…...
