实现N个数的全排列

下面这个代码是在学习了算法笔记之后,觉得非常简便,于是收藏一下。

具体代码如下:(这里是实现4个数的全排列,且从1开始排)

#include 
#include 
#include 
using namespace std;

const int maxn = 11;
int n, P[maxn], hashTable[maxn] = { false };

void generate(int index)
{
	if (index == n + 1)
	{
		for (int i = 1; i <= n; i++)
			printf("%d", P[i]);
		printf("\n");
		return;
	}
	for (int x = 1; x <= n; x++)
	{
		if (hashTable[x] == false)
		{
			P[index] = x;
			hashTable[x] = true;
			generate(index + 1);
			hashTable[x] = false;
		}
	}
}

int main()
{
	n = 4;
	generate(1);
	return 0;
}

 

你可能感兴趣的:(编程常见问题)