写在前面
最近在学习算法,备战算法比赛。本文是记录在学习枚举时的感悟。如有不正确的地方,希望您可以私信于我或在下方评论区留言。谢谢!
N个数的枚举(N个数的全排列)
生成全排列的方法有两种,一种是通过深度优先搜寻(DFS)来一个个试探列出N个数的全部情况,一种则是用C++algorithm库中next_permutation()函数直接全排列。
第一种
代码实现
#include<iostream>
#include<algorithm>
using namespace std;
bool used[1000];
int perm[1000];
void permutation(int pos , int n)
{
if(pos == n)
{
//编写对perm的操作
return;
}
for (int i = 0; i < n;++i)
{
if(!used[i])
{
perm[pos] = i;//记录
used[i] = true;//已经被使用过了
permutation(pos + 1, n