排列型枚举底层讲解(两种解法)

简介: 排列型枚举底层讲解(两种解法)

从 1∼n1∼n 这 nn 个整数中随机选取任意多个,输出所有可能的选择方案。


输入格式


输入一个整数 nn。


输出格式


每行输出一种方案。


同一行内的数必须升序排列,相邻两个数用恰好 11 个空格隔开。


对于没有选任何数的方案,输出空行。


本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。


数据范围


1≤n≤151≤n≤15


输入样例:


3

输出样例:


3

2

2 3

1

1 3

1 2

1 2 3微信截图_20220413200916.png

常规递归解法

#include<bits/stdc++.h>
using namespace std;
const int max=20;
bool a[20]={0};
int n;
void dfs(int u){
  if(u>n){
    for(int i=1;i<=n;i++){
  if(a[i])cout<<i<<" ";
    }cout<<endl;  
  }
else{
  a[u]=true;
  dfs(u+1);
  a[u]=false;
  dfs(u+1);
} 
}
int main(){
  cin>>n;
  dfs(1);
  return 0;
}

运用全排列函数轻松解决

#include<bits/stdc++.h>
using namespace std;
int n,m;
int main(){
cin>>n;
int a[n];
for(int i=0;i<n;i++){
    a[i]=i+1;
}
do{
for(int i=0;i<n;i++){
    cout<<a[i]<<' ';
}
    cout<<"\n";
}while(next_permutation(a,a+n));
    return 0;
}


微信截图_20220413200916.png微信截图_20220413200916.png

相关文章
|
程序员 编译器 C语言
C++风格与C风格类型强转异同
C++风格的强转: C++强制类型转换 C风格的强制类型转换很容易理解,不管什么类型都可以直接进行转换,使用格式如下: 目标类型 b = (目标类型) a; C++也是支持C风格的强制类型转换,但是C风格的强制类型转换可能会带来一些隐患,出现一些难以察觉的问题,所以C++又推出了四种新的强制类型转换来替代C风格的强制类型转换,降低使用风险。 在C++中,新增了四个关键字static_cast、const_cast、reinterpret_cast和dynamic_cast,用于支持C++风格的强制类型转换。 C++风格的强制类型转换能更清晰的表明它们要干什么,程序员只要看一眼这样的代码,立即
250 0
|
12月前
|
敏捷开发 安全 测试技术
软件开发的要点有哪些?
软件开发过程包括需求分析、设计、编码、测试、上线与维护五大阶段。每个阶段需注重团队合作、文档编写、安全性和性能优化。建议采用敏捷开发、CI/CD、建立用户反馈机制及持续培训,以确保开发高效、产品质量高且能快速响应市场变化。
|
10月前
|
人工智能 自然语言处理 自动驾驶
当视觉大模型陷入认知失调,马里兰大学构建了一个幻觉自动生成框架
马里兰大学研究人员提出AutoHallusion框架,旨在通过自动化生成幻觉图像和问题对,深入研究大型视觉语言模型(LVLMs)中的幻觉现象。幻觉指LVLMs生成与图像内容不符的描述,限制其广泛应用。AutoHallusion通过异常对象插入、配对对象插入和相关对象删除三种策略,揭示LVLMs在处理视觉信息时的弱点。实验结果显示,该框架能在多种SOTA模型上以高成功率引发幻觉,为改进模型提供宝贵线索。未来将提升图像质量和扩展问题设计范围。论文链接:https://arxiv.org/pdf/2406.10900
162 27
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
智能语音助手的技术演进与未来趋势####
【10月更文挑战第16天】 智能语音助手,作为人工智能领域的璀璨明珠,正以前所未有的速度融入我们的生活。本文旨在探索这一技术奇迹背后的奥秘,从最初的简单命令响应,到如今能够理解复杂语境、提供个性化服务的高阶智能体,智能语音助手的发展历程见证了技术进步的非凡成就。我们将深入剖析其核心技术原理,包括自然语言处理(NLP)、语音识别与合成、深度学习等,同时展望未来,探讨在物联网、医疗健康、教育等多个领域潜在的革命性应用。这不仅是一篇技术解读,更是对智能时代生活方式变革的一次深刻洞察。 ####
694 6
|
存储 算法 Java
【DFS(深度优先搜索)详解】看这一篇就够啦
本文介绍了深度优先搜索(DFS)算法及其应用。DFS从某个顶点出发,深入探索图的每条路径,直到无法前进为止,然后回溯。文章详细解释了DFS的基本思想,并通过示例图展示了其执行过程。此外,文中还探讨了三种枚举方式:指数型枚举、排列型枚举和组合型枚举,并提供了具体的代码实现。最后,文章通过几道练习题帮助读者更好地理解和应用DFS算法。
8890 19
【DFS(深度优先搜索)详解】看这一篇就够啦
|
存储 关系型数据库 MySQL
Mysql 用户管理(创建、删除、改密、授予权限、取消权限)
Mysql 用户管理(创建、删除、改密、授予权限、取消权限)
1337 0
|
存储 移动开发 算法
【数据结构和算法】使用数组的结构实现链表(单向或双向)
【数据结构和算法】使用数组的结构实现链表(单向或双向)
|
移动开发 C++
算法笔记(三)——二分查找(超详细,附带模板)
算法笔记(三)——二分查找(超详细,附带模板)
算法笔记(三)——二分查找(超详细,附带模板)
|
机器学习/深度学习 编解码 计算机视觉
CVPR'2023 | Lite-Mono: 一种新的轻量级自监督单目深度估计方法
CVPR'2023 | Lite-Mono: 一种新的轻量级自监督单目深度估计方法
688 0
|
资源调度 JavaScript
vue-cli3+webpack热更新失效问题
A项目中遇到问题,热更新失效,百思不得其解,查询搜索vuecli3热更新失效、vue histroy 模式热更新失效,网上看到不少方法,npm重新安装,不要用淘宝镜像cnpm安装;npm安装yarn,再用yarn重新install,yarn serve启动,在npm run serve 启动等方法都不好用。github有类似问题3.0.0-beta.16 热更新失效 · Issue #1559 · vuejs/vue-cli · GitHub,有次得到启发可能版本不同导致。 对比热更新正常的项目B的几个配置文件,重点查看package.json文件,发现有webpack版本不同。
652 0
vue-cli3+webpack热更新失效问题