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)

堆排序

计算机硬件知识总结

有重复元素的排列问题