c_cpp 设R = {R1,R2,...,RN}是要进行排列的Ñ个元素,RI = R- {RI}。集合X中元素的全排列记为彼尔姆(X)。(RI)彼尔姆( X)表示在全排列Perm(X)的每
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 设R = {R1,R2,...,RN}是要进行排列的Ñ个元素,RI = R- {RI}。集合X中元素的全排列记为彼尔姆(X)。(RI)彼尔姆( X)表示在全排列Perm(X)的每相关的知识,希望对你有一定的参考价值。
//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 设R = {R1,R2,...,RN}是要进行排列的Ñ个元素,RI = R- {RI}。集合X中元素的全排列记为彼尔姆(X)。(RI)彼尔姆( X)表示在全排列Perm(X)的每的主要内容,如果未能解决你的问题,请参考以下文章
全排列的实现
SCAU 算法课的题
全排列问题的递归算法(Perm)
堆排序
计算机硬件知识总结
有重复元素的排列问题