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

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

从 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++风格的强制类型转换能更清晰的表明它们要干什么,程序员只要看一眼这样的代码,立即
331 0
|
编解码 物联网 API
"揭秘SD文生图的神秘面纱:从选择模型到生成图像,一键解锁你的创意图像世界,你敢来挑战吗?"
【10月更文挑战第14天】Stable Diffusion(SD)文生图功能让用户通过文字描述生成复杂图像。过程包括:选择合适的SD模型(如二次元、2.5D、写实等),编写精准的提示词(正向和反向提示词),设置参数(迭代步数、采样方法、分辨率等),并调用API生成图像。示例代码展示了如何使用Python实现这一过程。
586 4
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
388 7
|
敏捷开发 安全 测试技术
软件开发的要点有哪些?
软件开发过程包括需求分析、设计、编码、测试、上线与维护五大阶段。每个阶段需注重团队合作、文档编写、安全性和性能优化。建议采用敏捷开发、CI/CD、建立用户反馈机制及持续培训,以确保开发高效、产品质量高且能快速响应市场变化。
|
12月前
|
人工智能 自然语言处理 自动驾驶
当视觉大模型陷入认知失调,马里兰大学构建了一个幻觉自动生成框架
马里兰大学研究人员提出AutoHallusion框架,旨在通过自动化生成幻觉图像和问题对,深入研究大型视觉语言模型(LVLMs)中的幻觉现象。幻觉指LVLMs生成与图像内容不符的描述,限制其广泛应用。AutoHallusion通过异常对象插入、配对对象插入和相关对象删除三种策略,揭示LVLMs在处理视觉信息时的弱点。实验结果显示,该框架能在多种SOTA模型上以高成功率引发幻觉,为改进模型提供宝贵线索。未来将提升图像质量和扩展问题设计范围。论文链接:https://arxiv.org/pdf/2406.10900
215 27
|
机器学习/深度学习 人工智能 自然语言处理
智能语音助手的技术演进与未来趋势####
【10月更文挑战第16天】 智能语音助手,作为人工智能领域的璀璨明珠,正以前所未有的速度融入我们的生活。本文旨在探索这一技术奇迹背后的奥秘,从最初的简单命令响应,到如今能够理解复杂语境、提供个性化服务的高阶智能体,智能语音助手的发展历程见证了技术进步的非凡成就。我们将深入剖析其核心技术原理,包括自然语言处理(NLP)、语音识别与合成、深度学习等,同时展望未来,探讨在物联网、医疗健康、教育等多个领域潜在的革命性应用。这不仅是一篇技术解读,更是对智能时代生活方式变革的一次深刻洞察。 ####
801 6
|
数据采集 定位技术 计算机视觉
归一化
【9月更文挑战第15天】
641 3
|
Java 数据库连接 数据库
sqlLite 如何使用数据库连接池
这篇文章介绍了如何在SQLite数据库操作中使用HikariCP连接池以减少频繁建立和释放数据库连接的资源消耗,包括在Maven项目中添加依赖、配置HikariDataSource对象以及实现数据库连接池的具体代码示例。
|
机器学习/深度学习 存储 算法
算法时间复杂度分析
这篇文章讲解了如何分析算法的时间复杂度,包括关注循环执行次数最多的代码段、总复杂度的确定、嵌套代码复杂度的计算方法,并提供了大O阶的推导步骤和常见时间复杂度的列表,同时还介绍了空间复杂度的概念及其重要性。
|
存储 关系型数据库 MySQL
Mysql 用户管理(创建、删除、改密、授予权限、取消权限)
Mysql 用户管理(创建、删除、改密、授予权限、取消权限)
1417 0