c_cpp 【递归法】排列问题【2-4】
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 【递归法】排列问题【2-4】相关的知识,希望对你有一定的参考价值。
//2-4 排列问题
#include "stdafx.h"
#include <iostream>
using namespace std;
template <class Type>
inline void Swap(Type &a,Type &b);
template <class Type>
void Perm(Type list[],int k,int m);
int main()
{
int list[3];
for(int i=0; i<3;i++)
{
list[i] = i+1;
}
Perm(list,0,2);
return 0;
}
template <class Type>
inline void Swap(Type &a,Type &b)
{
Type temp = a;
a = b;
b = temp;
}
template <class Type>
void Perm(Type list[],int k,int m)
{
//只剩下一个元素
if(k == m){
for(int i=0; i<=m; i++)
{
cout<<list[i]<<" ";
}
cout<<endl;
}
else
{
//将list[k:m}中的每一个元素分别与list[k]中的元素交换
//然后递归计算list[k+1:m]的全排列,将计算结果作为list[0:k]后缀
for(int i=k; i<=m;i++){
Swap(list[k],list[i]);
Perm(list,k+1,m);
Swap(list[k],list[i]);
}
}
}
以上是关于c_cpp 【递归法】排列问题【2-4】的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 非递归n! C中的排列
Permutations,全排列
JavaScript 递归法排列组合二维数组
JavaScript 递归法排列组合二维数组2
力扣784. 字母大小写全排列 回溯法 C++递归和非递归俩种实现非方式
左神算法第八节课:介绍递归和动态规划(汉诺塔问题;打印字符串的全部子序列含空;打印字符串的全排列,无重复排列;母牛数量;递归栈;数组的最小路径和;数组累加和问题,一定条件下最大值问题(01背包))