全排列的两种写法 2021-02-17

简介: 全排列的两种写法 2021-02-17

输出1、2、3、4、5五个数中任选三个数的全排列,其中不允许有重复的组合形式。

1. // C 写法
2. #include <iostream>
3. using namespace std;
4. int a[10],book[10],n;
5. void dfs(int step,int t){
6.  if(step==t+1){
7.    for(int i=1;i<=t;i++)
8.      cout<<a[i]<<" ";
9.    cout<<endl;
10.     return;
11.   }
12.   for(int i=1;i<=n;i++){
13.     if(book[i]==0&&i>a[step-1]){
14.       a[step]=i;
15.       book[i]=1;
16.       dfs(step+1,t);
17.       book[i]=0;
18.     }
19.   }
20.   return;
21. }
22. int main(int argc, char *argv[])
23. {
24.   n=5;
25.   dfs(1,3);
26.   return 0;
27. }
1. // C++ 写法
2. #include <iostream>
3. #include <vector>
4. #include <algorithm>
5. using namespace std;
6. vector<vector<int> > res;
7. void backtrack(vector<int> &nums,vector<int> &track)
8. {
9.  if(3==track.size())
10.   {
11.     res.push_back(track);
12.     return;
13.   }
14.   for(vector<int>::iterator it=nums.begin();it!=nums.end();it++)
15.   {
16.     if(std::count(track.begin(),track.end(),*it) || (track.size()>0 && *it<track.back()))
17.       continue;
18.     track.push_back(*it);
19.     backtrack(nums,track);
20.     track.pop_back();
21.   }
22. }
23. void dfs(vector<int> nums)
24. {
25.   vector<int> track;
26.   res.clear();
27.   backtrack(nums,track);
28. }
29. int main(int argc, char *argv[])
30. {
31.   int a[]={1,2,3,4,5};
32.   vector<int> nums(a,a+sizeof(a)/sizeof(a[0]));
33.   dfs(nums);
34.   for(int i=0;i<res.size();i++)
35.   {
36.     for(vector<int>::iterator it=res[i].begin();it!=res[i].end();it++)
37.       cout<<*it<<" ";
38.     cout<<endl;
39.   }
40.   cout<<res.size()<<endl;
41.   return 0;
42. }
相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
【实操】涨点神器你还不会,快点进来学习Label Smooth
【实操】涨点神器你还不会,快点进来学习Label Smooth
570 1
|
存储 算法 Java
操作系统之存储管理——FIFO算法和LRU算法
存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
1234 0
操作系统之存储管理——FIFO算法和LRU算法
|
PyTorch 算法框架/工具
Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)
Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)
1467 0
|
存储 数据采集 监控
SkyWalking全景解析:从原理到实现的分布式追踪之旅
SkyWalking全景解析:从原理到实现的分布式追踪之旅
2509 1
|
存储 自然语言处理 运维
服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka
这里就平时经常用到的服务发现的产品进行特性的对比,总的来看,目前Consul 自身功能,和 spring cloud 对其集成的支持都相对较为完善,而且运维的复杂度较为简单,Eureka 设计上比较符合场景,但还需持续的完善。
5766 0
|
机器学习/深度学习 人工智能 自然语言处理
深入理解人工智能中的深度学习技术及其最新进展
深入理解人工智能中的深度学习技术及其最新进展
1462 33
|
安全 开发者 流计算
python中的deque详解
`deque`是Python中功能强大且灵活的双端队列,提供了高效的双端操作,适用于多种实际应用场景。通过详细了解 `deque`的基本特性和常见操作,开发者可以更好地利用这一数据结构来提高代码的性能和可读性。希望本文对你在Python编程中使用 `deque`有所帮助。
752 0
|
物联网 数据处理
LLM-05 大模型 15分钟 FineTuning 微调 ChatGLM3-6B(微调实战1) 官方案例 3090 24GB实战 需22GB显存 LoRA微调 P-TuningV2微调
LLM-05 大模型 15分钟 FineTuning 微调 ChatGLM3-6B(微调实战1) 官方案例 3090 24GB实战 需22GB显存 LoRA微调 P-TuningV2微调
475 0
|
数据采集 XML 数据挖掘
CDGA|数据治理新视角:清洗数据,让数据质量飞跃提升
在数据治理中,标准化处理和确保数据的可溯源性是两个重要的方面。通过标准化处理,我们可以将复杂的数据转化为易于管理和分析的形式;通过确保数据的可溯源性,我们可以验证数据的准确性和可靠性。这两个方面共同构成了数据治理的基石,为数据分析和挖掘提供了有力的支持。因此,我们应该重视数据治理工作,不断完善和优化数据治理体系,以应对日益复杂的数据挑战。
|
传感器 监控 安全
智能家居系统:物联网技术的应用与挑战
在这篇文章中,我们将深入探讨智能家居系统背后的技术原理、实际应用以及面临的主要挑战。通过分析物联网技术如何实现家居自动化,并结合具体案例,本文旨在提供对智能家居发展现状和未来趋势的全面理解。