news 2026/5/12 6:01:35

B3622 枚举子集(递归实现指数型枚举)← 经典 DFS 写法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
B3622 枚举子集(递归实现指数型枚举)← 经典 DFS 写法

【题目来源】
https://www.luogu.com.cn/problem/B3622

【题目描述】
今有 n 位同学,可以从中选出任意名同学参加合唱。
请输出所有可能的选择方案。

【输入格式】
仅一行,一个正整数 n。

【输出格式】
若干行,每行表示一个选择方案。
每一种选择方案用一个字符串表示,其中第 i 位为 Y 则表示第 i 名同学参加合唱;为 N 则表示不参加。
需要以字典序输出答案。

【输入样例】
3

【输出样例】
NNN
NNY
NYN
NYY
YNN
YNY
YYN
YYY

【数据范围】
对于 100% 的数据,保证 1≤n≤10。

【算法分析】
● DFS 算法模板:https://blog.csdn.net/hnjzsyjyj/article/details/118736059

void dfs(int step) { 判断边界 { 输出解 } 尝试每一种可能 { 满足check条件{ 标记 继续下一步:dfs(step+1) 恢复初始状态(回溯的时候要用到) } } }

● dfs(pos)从第 pos 位开始枚举选择,递归生成第 pos 位到第 n 位的所有 0/1 组合。

【算法代码】

#include<bits/stdc++.h> using namespace std; const int N=15; int a[N]; int n; void dfs(int pos) { if(pos==n+1) { for(int i=1; i<=n; i++) { if(a[i]) cout<<"Y"; else cout<<"N"; } cout<<endl; return; } a[pos]=0; dfs(pos+1); a[pos]=1; dfs(pos+1); } int main() { cin>>n; dfs(1); return 0; } /* in: 3 out: NNN NNY NYN NYY YNN YNY YYN YYY */




【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/160587719





版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 5:57:36

规范驱动开发:基于OpenAPI与LLM的现代API构建实践

1. 项目概述&#xff1a;一个基于规范驱动的现代API开发实践最近在GitHub上看到一个挺有意思的项目&#xff0c;叫izzymsft/spec-driven-dev-backend-apis&#xff0c;它是一个用FastAPI构建的客户管理后端REST API。这个项目本身的功能——客户和地址的CRUD操作&#xff0c;结…

作者头像 李华
网站建设 2026/5/12 5:55:36

计算机视觉论文筛选实战:可复现性、工业信号与落地验证方法论

1. 这不是“论文速读”&#xff0c;而是一份计算机视觉研究者的真实周报工作流如果你每天打开arXiv、CVPR官网或Papers With Code&#xff0c;却总在标题海洋里迷失方向——点开5篇&#xff0c;3篇看不懂动机&#xff0c;1篇复现失败&#xff0c;剩下1篇发现作者连消融实验都懒…

作者头像 李华
网站建设 2026/5/12 5:51:37

功率半导体热瞬态测量技术原理与应用

1. 热瞬态表征技术概述在功率半导体器件的设计与应用中&#xff0c;热管理始终是决定产品可靠性的关键因素。传统热阻测量方法&#xff08;如两点法&#xff09;在低热阻场景下存在显著局限性——当器件热阻低于1K/W时&#xff0c;测量误差可能高达30%。这就像用普通尺子测量头…

作者头像 李华
网站建设 2026/5/12 5:50:52

汽车OTA软件更新:从技术原理到市场格局的深度解析

1. 汽车OTA软件更新&#xff1a;一场正在发生的深度变革如果你在最近几年购买过一辆新车&#xff0c;或者只是简单地关注过汽车新闻&#xff0c;那么“OTA”这个词对你来说应该不再陌生。它不再是智能手机的专属&#xff0c;而是正迅速成为现代汽车的“标配”。作为一名在汽车电…

作者头像 李华