n个整数全排列的递归实现(C++)

简介:

 全排列是非常常用的一个小算法,下面是n个整数全排列的递归实现,使用的是C++


#include <iostream>
using namespace std;
int n = 0;

void swap(char *a ,char *b)
{
	int m ;
	m = *a;
	*a = *b;
	*b = m;
}

void perm(char list[],int k, int m )
{
	int i;
	if(k >m)
	{
		for(i = 0 ; i <= m ; i++)
		{
			cout<<list[i];

		}
		cout<<endl;

	}
	else
	{
		for(i = k ; i <=m;i++)
		{
			swap(&list[k],&list[i]);
			perm(list,k+1,m);
			swap(&list[k],&list[i]);
		}
	}
}

int main()
{
	char list[] ="12345";
	perm(list,0,4);

	return 0;
}


目录
相关文章
汉诺塔问题(递归)/梵塔问题c++
汉诺塔问题(递归)/梵塔问题c++
|
6月前
|
算法 C++
C++快速幂(递归)
C++快速幂(递归)
|
7月前
|
算法 C++
【C++】递归,搜索与回溯算法入门介绍和专题一讲解
【C++】递归,搜索与回溯算法入门介绍和专题一讲解
|
2月前
|
设计模式 中间件 程序员
【C/C++ 奇异递归模板模式 】C++中CRTP模式(Curiously Recurring Template Pattern)的艺术和科学
【C/C++ 奇异递归模板模式 】C++中CRTP模式(Curiously Recurring Template Pattern)的艺术和科学
23 3
|
25天前
|
C++
C++ 递归与面向对象编程基础
C++ 递归是函数自我调用的技术,用于简化复杂问题。以递归求和为例,`sum` 函数通过不断调用自身累加数字直到 `k` 为 0。递归需谨慎,避免无限循环和资源浪费。面向对象编程(OOP)将程序划分为交互对象,具有属性和方法,提升代码复用、维护和扩展性。C++ OOP 基本概念包括类、对象、属性和方法。通过创建类和对象,利用点语法访问成员,实现代码组织。
24 0
|
4月前
|
Java Go Python
Golang每日一练(leetDay0103) 区域和检索1~3
Golang每日一练(leetDay0103) 区域和检索1~3
30 0
Golang每日一练(leetDay0103) 区域和检索1~3
|
4月前
|
Java Go C++
C/C++每日一练(20230424) 只出现一次的数字、有效的括号、递归反序正整数
C/C++每日一练(20230424) 只出现一次的数字、有效的括号、递归反序正整数
31 0
C/C++每日一练(20230424) 只出现一次的数字、有效的括号、递归反序正整数
|
4月前
|
算法 C++ Java
C/C++每日一练(20230421) 位1的个数、递归和非递归求和、俄罗斯套娃信封问题
C/C++每日一练(20230421) 位1的个数、递归和非递归求和、俄罗斯套娃信封问题
24 0
C/C++每日一练(20230421) 位1的个数、递归和非递归求和、俄罗斯套娃信封问题
|
5月前
|
存储 C++
二叉搜索树详解以及C++实现二叉搜索树(递归和非递归)
二叉搜索树详解以及C++实现二叉搜索树(递归和非递归)
48 0