实现 1 ~ n 的全排列
代码
#include <iostream>
using namespace std;
int n;
int order[20];
int state;
void f(int k){
if(k == n+1){
for(int i = 1; i <= n; i++)
cout << order[i] << " ";
cout << endl;
return ;
}
for(int i = 1; i <= n; i++){
if((state >> i) & 1) continue;
order[k] = i;
state = state | 1 << i;
f(k+1);
state = state & (~(1 << i));
}
}
int main()
{
cin >> n;
state = (1 << (n + 1));
f(1);
return 0;
}