93. 递归实现组合型枚举

题目:

93. 递归实现组合型枚举 - AcWing题库 

 

思路: 

 1.从n个数中选择m个数,问有多少种选法。---->抽象为有m个坑位(设置kenway[N]表示),其中填入编号为1~n的萝卜,问有几种填法。这里我们可以采用递归搜索树的方法枚举。u表示当前搜索到的坑位。

2.注意:因为是问有多少种组合而非排列,故不用考虑顺序(即12与21属于一种)。为防止搜索时在坑位已经记录了12的情况下再次记录21导致重复,我们要求坑位kenway[i]上的数字依次递增-->我们需要再定义一个start表示每个坑位kenway[i]最小可以取的值。

3.优化:不难发现,例如萝卜编号为1~5(n=5),坑位数量为3(m=3)。当第一个坑位填入编号为4的萝卜时,为满足后面2个坑位递增,第二个坑位只能选择5,那么第三个坑位就没有可选择的萝卜了,故kenway[1]填入4时的这条递归搜索树分支没有继续向下搜索的必要了,因而此处我们可以实行剪枝操作。(当u-1+n-start+1<m时,直接return掉这条分支)

代码:

//用dfs深度优先搜索(一条路走到黑才转头回到上一步)
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int N = 30;
int kenway[N];
int n, m;
void dfs(int u, int start)
{if (u + n - start < m)return;//递归搜索树剪枝if (u == m + 1) {//表示坑位已经暴格了-->输出并结束这条搜索线for (int i = 1; i <= m; i++)printf("%d ", kenway[i]);puts("");return;}for (int i = start; i <= n; i++) {kenway[u] = i;//给当前坑位赋值(第一个坑位可以赋值从1到n)dfs(u + 1, i + 1);//(在前一个坑位为i的基础上)判断下一个坑位kenway[u] = 0;//恢复现场}return;
}int main()
{cin >> n >> m;dfs(1, 1);//从第一个坑位开始放数,从1开始放
}

 

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

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

相关文章

EthernetIP 转MODBUS RTU协议网关连接FANUC机器人作为EthernetIP通信从站

远创智控YC-EIPM-RTU网关产品是一款高效的数据采集工具&#xff0c;它可以通过各种数据接口与工业领域的仪表、PLC、计量设备等产品连接&#xff0c;实时采集这些设备中的运行数据、状态数据等信息。采集到的数据经过整合和运算等操作后&#xff0c;可以被传输到其他设备或者云…

你的DOT即将解锁,请注意以下事项

作者&#xff1a; David 还记得两年前Polkadot平行链卡槽拍卖质押吗&#xff1f; 参与平行链众贷&#xff0c;质押DOT两年&#xff0c;选择投票的项目方&#xff0c;获得相应token奖励。当年质押的DOT即将解锁&#xff0c;就在十月底&#xff0c;10月24日请注意。 第一批解锁…

【TES720D】青翼科技基于复旦微的FMQL20S400全国产化ARM核心模块

板卡概述 TES720D是一款基于上海复旦微电子FMQL20S400的全国产化核心模块。该核心模块将复旦微的FMQL20S400&#xff08;兼容FMQL10S400&#xff09;的最小系统集成在了一个50*70mm的核心板上&#xff0c;可以作为一个核心模块&#xff0c;进行功能性扩展&#xff0c;特别是用…

【数据结构】队列的实现与优化指南

一、前言 队列是一种重要的数据结构&#xff0c;它按照“先入先出”&#xff08;FIFO&#xff09;的原则管理数据。本文将介绍队列的概念、应用场景&#xff0c;以及如何使用数组实现普通队列和环形队列。 二、内容 2.1 概述 &#xff08;1&#xff09;什么是队列&#xff1…

《软件方法》2023版第1章(10)应用UML的建模工作流-大图

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.4 应用UML的建模工作流 1.4.1 概念 我用类图表示建模工作流相关概念如图1-16。 图1-16 建模工作流相关概念 图1-16左侧灰色部分定义了“游戏规则”&#xff0c;右侧则是在“游戏规…

30W网络对讲广播一体音柱

SV-7042T 30W网络对讲广播一体音柱 一、描述 SV-7042T是深圳锐科达电子有限公司的一款壁挂式网络有源音柱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带的功放和喇叭输出播放&#xff0c;其采用防水设计&#xff0c;功率可以从20W到40W。SV-7042T作为网…

pycharm操作git

pycharm操作git 之前用命令做的所有操作&#xff0c;使用pychrm点点就可以完成 克隆代码 上方工具栏Git ⇢ \dashrightarrow ⇢ Clone ⇢ \dashrightarrow ⇢ 填写地址&#xff08;http、ssh&#xff09; 提交到暂存区&#xff0c;提交到版本库&#xff0c;推送到远程 直接…

淘宝拍立淘接口,按图搜索商品接口,图片识别接口,图片上传搜索接口,图片搜索API接口,以图搜货接口

淘宝拍立淘图片搜索接口可以通过上传或输入图片链接的方式&#xff0c;调用淘宝的图片搜索引擎&#xff0c;返回与该图片相关的所有淘宝商品。 使用该接口需要先申请淘宝开放平台的App Key和App Secret&#xff0c;获取相应的API访问权限。在调用接口时&#xff0c;需要传入商…

ShareMouse for Mac(多台电脑鼠标键盘共享软件)

ShareMouse mac版是一款Mac平台上可以在多台电脑间共享鼠标的工具软件&#xff0c;sharemousefor Mac支持 Windows 与 Mac&#xff0c;并可以在不同电脑间共享剪贴板。只需要移动鼠标指针的到想控制的显示器那里去、鼠标光标就会神奇地“跨越”到邻近的电脑屏幕上。每个计算机都…

敏朗公益 · 童心共融:福州市实验幼儿园携手敏朗共同举办活动!

2023年3月31日&#xff0c;福州市敏朗公益服务中心联合福州市实验幼儿园开展“童年童趣童心共融”主题融合活动&#xff0c;让星儿体验幼儿园生活&#xff0c;与普龄儿童一同分享快乐的童年。 本场活动是由福州市鼓楼区民政局、鼓楼区残疾人联合会指导&#xff0c;在第16届世界…

淘宝店铺所有商品数据接口及店铺商品数据分析

获取淘宝店铺所有商品数据的接口是淘宝开放平台提供的接口&#xff0c;通过该接口可以获取店铺所有商品数据。 通过淘宝开放平台接口获取店铺所有商品数据的方法如下&#xff1a; 在开放平台注册成为开发者并创建一个应用&#xff0c;获取到所需的 App Key 和 App Secret 等信…

可视化工具Datart踩(避)坑指南(6)——避免多人同时编辑

作为目前国内开源版本最好用的可视化工具&#xff0c;Datart无疑是低成本高效率可供二开的可视化神兵利器。当然&#xff0c;免费的必然要付出一些踩坑的代价。本篇我们来讲一讲可视化工具Datart踩&#xff08;避&#xff09;坑指南&#xff08;6&#xff09;之避免多人同时编辑…

PAM从入门到精通(九)

接前一篇文章&#xff1a;PAM从入门到精通&#xff08;八&#xff09; 本文参考&#xff1a; 《The Linux-PAM Application Developers Guide》 先再来重温一下PAM系统架构&#xff1a; 更加形象的形式&#xff1a; 五、主要函数详解 7. pam_authenticate 概述&#xff1a; …

即刻报名,企业服务与新经济论坛亮点提前揭秘!

峰会官网已上线&#xff0c;最新议程请关注&#xff1a;doris-summit.org.cn 即刻报名 Doris Summit 是 Apache Doris 社区一年一度的技术盛会&#xff0c;由飞轮科技联合 Apache Doris 社区的众多开发者、企业用户和合作伙伴共同发起&#xff0c;专注于传播推广开源 OLAP 与实…

【算法 | 位运算No.1】leetcode268. 丢失的数字

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【Leetcode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

JDBC 和数据库连接池

文章目录 1. JDBC概述1.1 基本介绍1.2 模拟JDBC1.3 JDBC 带来的好处1.4 JDBC API 2. JDBC 快速入门2.1 JDBC 程序编写步骤2.2 JDBC 第一个程序 3. 获取数据库连接 5 种方式3.1 方式 13.2 方式 23.3 方式 33.4 方式 43.5 方式 53.6 课堂练习 4. ResultSet [ 结果集]5. Statement…

软考(高级)是否需要报班,大家有什么建议?

对于报考高级专业领域还不确定。根据我的个人经验&#xff0c;我强烈建议不要犹豫&#xff0c;直接报班。时间非常紧张&#xff0c;务必抓紧学习重点&#xff0c;不要漫无目的地自学。免费的学习方式往往会付出更多的时间成本。请考虑自身经济情况。 尽管自学考试自由度高&…

视频下载小助手儿开通了视频号下载功能

不少人对视频号都有视频下载的需要&#xff0c;但由于平台并不提供该功能&#xff0c;我们视频下载小助手儿&#xff0c;就提供了视频号的视频下载功能。 为什么起名叫下载小助手儿呢&#xff1f; 下载小助手儿更直观让用户了解到他可以下载视频号的视频&#xff0c;但不局限与…

IStoreOS结合内网穿透软件Cpolar实现公网远程访问

文章目录 前言1. ssh局域网登陆iStoreOS系统2. 安装Cpolar内 网穿透软件3. 测试公网远程链接4. 公网使用固定http地址远程访问iStoreOS webui界面 前言 iStoreOS系统是基于OpenWrt定制的软路由系统&#xff0c;提供了如轻nas&#xff0c;云盘&#xff0c;文件共享等众多网络服务…

相似性搜索:第 7 部分--LSH 组合物

Vyacheslav Efimov – Medium S相似性搜索是一个问题&#xff0c;给定一个查询&#xff0c;目标是在所有数据库文档中找到与其最相似的文档。 一、说明 在数据科学中&#xff0c;相似性搜索经常出现在 NLP 领域、搜索引擎或推荐系统中&#xff0c;其中需要检索最相关的文档或项…