深度优先搜索DFS搜索数及B3621 枚举元组 B3622 枚举子集

深度优先搜索DFS搜索

DFS:从根节点出发,寻找子节点,到最深层返回到上一层继续递归搜索。

B3621 枚举元组

题目传送

题面

题目描述

n 元组是指由 n 个元素组成的序列。例如 (1,1,2) 是一个三元组、(233,254,277,123)是一个四元组。

给定 n 和 k,请按字典序输出全体 n 元组,其中元组内的元素是在 [1,k] 之间的整数。

「字典序」是指:优先按照第一个元素从小到大的顺序,若第一个元素相同,则按第二个元素从小到大……依此类推。详情参考样例数据。

输入格式

仅一行,两个正整数 n,k。

输出格式

若干行,每行表示一个元组。元组内的元素用空格隔开。

输入输出样例

输入 #1 

2 3

输出 #1 

1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

题解

排列组合类题目,此时使用dfs递归搜索出“最深层”的数据,当搜索到一个pos的最深层,输出这一次所有数。此时的i是从1开始搜索,默认第一个从1开始,dfs搜索中数组答案a的pos位置为i,继续递归下一个pos+1的位置,知道搜索到终点。dfs循环中pos到达终点必须写return;否则会出现死循环。

代码

#include<bits/stdc++.h>
using namespace std;int a[100005]; 
int n,k;
void dfs(int pos){if(pos==n+1){//递归到终点了,n个位置都确定了for(int i=1;i<=n;i++)cout<<a[i]<<" "; cout<<endl;return;}for(int i=1;i<=k;i++){a[pos] = i; //第pos个位置为idfs(pos+1); //递归下一个位置}
}
int main(){cin>>n>>k;dfs(1); //从第1个位置开始搜索
}

B3622 枚举子集

题目传送

题面

题目描述

今有 n 位同学,可以从中选出任意名同学参加合唱。

请输出所有可能的选择方案。

输入格式

仅一行,一个正整数 n。

输出格式

若干行,每行表示一个选择方案。

每一种选择方案用一个字符串表示,其中第 i 位为 Y 则表示第 i 名同学参加合唱;为 N 则表示不参加。

需要以字典序输出答案。

输入输出样例

输入 #1 

3

输出 #1 

NNN
NNY
NYN
NYY
YNN
YNY
YYN
YYY

题解

题目中的Y和N可以看作布尔数组,方便理解,和编写代码。如果是N,那么负值为0,如果是Y那么负值就是非0的数(1)。每一种组合的每一个数必须是N或Y,所以所有的数都可以用0或1代替。思路和上一道题目一样,dfs的搜索是从所有可能的数字选择下一个后递归填充此时pos位置的数值i。如果pos=n+1(到了一个数列长度极限),判断+输出。这里的dfs循环也需要return;代码否则会出现死循环。

要点:

  • dfs() 表示枚挙到第i个人。
  • a数组保存当前枚举情况,a们来存第i个人参加,还是不参加。
  • 当枚举完所有的人,就全部输出。
  • dfs(pos) 負責枚挙 alpos」。

代码

#include <bits/stdc++.h>
using namespace std;int n, k;
int a[15];void dfs(int pos) {if(pos==n+1) { // 枚举完所有人for(int i=1;i<=n;i++){ // 输出方案if(a[i]==0)cout<<"N";// 如果是 0 输出 'N'else cout<<"Y";// 否则输出 'Y'}cout << endl;return;}for(int i=0;i<=1;i++) {a[pos] = i;    // 将 pos 位填充成 idfs(pos+1);    // 递归填写后续位置}
}int main() {cin >> n;dfs(1); // 最先枚举第几个人?return 0;
}

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

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

相关文章

牛客网【面试必刷TOP101】~ 06 递归/回溯

牛客网【面试必刷TOP101】~ 06 递归/回溯 文章目录 牛客网【面试必刷TOP101】~ 06 递归/回溯[toc]BM55 没有重复项数字的全排列(★★)BM56 有重复项数字的全排列(★★)BM57 岛屿数量(★★)BM58 字符串的排列(★★)BM59 N皇后问题(★★★)BM60 括号生成(★★)BM61 矩阵最长递增路…

中介者模式(C++)

定义 用一个中介对象来封装(封装变化)一系列的对象交互。中介者使各对象不需要显式的相互引用(编译时依赖->运行时依赖)&#xff0c;从而使其耦合松散(管理变化)&#xff0c;而且可以独立地改变它们之间的交互。 应用场景 在软件构建过程中&#xff0c;经常会出现多个对象…

C#实现三菱FX-3U SerialOverTcp

设备信息 测试结果 D值测试 Y值写入后读取测试 协议解析 三菱FX 3U系列PLC的通信协议 1. 每次给PLC发送指令后&#xff0c;必须等待PLC的应答完成才能发送下一条指令; 2. 报文都是十六进制ASCII码的形式 3. 相关指令 指令 命令码&#xff08;ASCII码&#xff09; 操作原件 …

Selenium的xpath高级写法-实用篇

系列文章目录 提示&#xff1a;阅读本章之前&#xff0c;请先阅读目录 文章目录 系列文章目录前言获取父级获取前一个兄弟级获取后一个兄弟级获取内容包含某些内容获取内容是空消除不可见的内容 前言 获取父级 //div[text()‘我是子级’]/parent::div[text()‘我是父级’] 获取…

怎样制定测试计划和设计测试用例?

测试工作贯穿于整个软件开发生命周期&#xff0c;是一项庞大而复杂的工作&#xff0c;需要制订一个完整且详细的测试计划作为指导。测试计划是整个测试工作的导航图&#xff0c;但它并不是一成不变的&#xff0c;随着项目推进或需求变更&#xff0c;测试计划也会不断发生改变&a…

06 - Stream如何提高遍历集合效率?

前面我们讲过 List 集合类&#xff0c;那我想你一定也知道集合的顶端接口 Collection。 在 Java8 中&#xff0c;Collection 新增了两个流方法&#xff0c;分别是 Stream() 和 parallelStream()。 1、什么是 Stream&#xff1f; 现在很多大数据量系统中都存在分表分库的情况…

vue3部署宝塔后请求接口404以及刷新页面404的问题解决方案

技术&#xff1a;vue3.2.13 UI框架:element-plus 2.1.1 服务器&#xff1a;腾讯云Centos系统宝塔面板 Nginx:1.22.1 前提&#xff1a;宝塔面板》网站PHP项目 已经新建了项目 1.处理vue页面刷新报错404 如上图&#xff0c;在PHP网站》设置》配置文件&#xff0c;新增如下代码…

Vue VS React:两大前端框架的对比与分析

Vue和React是当前最流行的前端框架之一&#xff0c;它们都有着广泛的应用和开发者社区。下面是Vue和React之间的深度对比与分析&#xff1a; 学习曲线&#xff1a; Vue&#xff1a;Vue拥有简单直观的API和文档&#xff0c;对初学者友好。Vue的设计初衷是逐步增强的&#xff0c;…

springboot 多模块 每个模块进行单独打包

springboot项目目录结构 打包模块需要进行的配置 配置文件引入打包插件 <build><finalName>api</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifac…

篇八:装饰器模式:动态增加功能

篇八&#xff1a;“装饰器模式&#xff1a;动态增加功能” 开始本篇文章之前先推荐一个好用的学习工具&#xff0c;AIRIght&#xff0c;借助于AI助手工具&#xff0c;学习事半功倍。欢迎访问&#xff1a;http://airight.fun/。 另外有2本不错的关于设计模式的资料&#xff0c…

github访问加速

# 解决GitHub无法访问140.82.113.3 github.com 140.82.114.20 gist.github.com151.101.184.133 assets-cdn.github.com 151.101.184.133 raw.githubusercontent.com 151.101.184.133 gist.githubusercontent.com 151.101.184.133 cloud.githubusercontent…

css3 实现文字横幅无缝滚动

css3 实现文字横幅无缝滚动 使用 css3 关键帧 keyframes 和 animation 属性实现文字横幅无缝滚动。 <template><div class"skiHallBanner"><div class"skiHallBanner-text"><span>{{ text }}</span></div></div>…

网站架构部署

网站架构部署 网站部署 LAMP架构介绍 linuxapache&#xff08;nginx&#xff09; 提供静态资源展示转发请求给后端程序…… mysql 数据信息…… php {PHP Module}…… 快速部署LAMP架构 [rootllz ~]# iptables -F [rootllz ~]# systemctl stop firewalld [rootllz ~]# sy…

推荐几个好玩的网页版联机小游戏

generals.io 点此进入 网格地图&#xff0c;设定简单&#xff0c;兵力只有数字&#xff0c;玩家控制自己的兵力扩张领地&#xff0c;击杀其他玩家&#xff0c;但是很好玩&#xff0c;还可以自定义地图 基本上都是国人 richup.io 点此进入 类似于大富翁游戏 基本上都是外国人…

GIT-HUB上传大文件.docx

下载git Github上传大文件&#xff08;&#xff1e;25MB&#xff09;教程_UestcXiye的博客-CSDN博客 上传流程 https://blog.csdn.net/weixin_35770067/article/details/116564429?spm1001.2101.3001.6661.1&utm_mediumdistribute.pc_relevant_t0.none-task-blog-2%7Ed…

【locust】使用locust + boomer实现对接口的压测

目录 背景 环境安装 脚本编写 master slave节点&#xff08;golang/boomer&#xff09; 问题 资料获取方法 背景 很早之前&#xff0c;考虑单机执行能力&#xff0c;使用locust做过公司短信网关的压测工作&#xff0c;后来发现了一个golang版本的locust&#xff0c;性能…

windows 10 远程桌面配置

1. 修改远程桌面端口&#xff08;3389&#xff09; 打开注册表&#xff08;winr&#xff09;, 输入regedit 找到配置项【计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\Wds\rdpwd\Tds\tcp】 &#xff0c; 可以通过搜索“Wds”快速定位。 修改端口配…

浅谈测试开发岗位

一、测试开发的概念与需求 测试开发&#xff0c;通常也被称为自动化测试&#xff0c;是一个涵盖了从测试设计、开发、执行和结果分析等一系列活动的职位。在软件开发的生命周期中&#xff0c;测试开发起着至关重要的作用&#xff0c;其主要目标是确保软件的质量和性能达到预期…

【C++】STL map和set用法基本介绍

map、set用法简介 前言正式开始set构造erasefindswapcountlower_bound 和 upper_boundlower_boundupper_bound equal_rangepair multiusetfinderasecount map构造insert[ ][ ]底层原理 multimap两道题目前K个高频单词两个数组的交集 前言 首先&#xff0c;使用map和set最少要了…

Jmeter(六) - 从入门到精通 - 建立数据库测试计划(详解教程)

1.简介 在实际工作中&#xff0c;我们经常会听到数据库的性能和稳定性等等&#xff0c;这些有时候也需要测试工程师去评估和测试&#xff0c;因此这篇文章主要介绍了jmeter连接和创建数据库测试计划的过程,在文中通过示例和代码非常详细地介绍给大家&#xff0c;希望对各位小伙…