求一个集合的全排列
#include <iostream>using namespace std;const int _N = 10000;int d[_N], p[_N];bool flag[_N];int n;void dfs(int pos){int i;if(pos == n){for(i = 0; i < n; i++)cout<<d[i]<<" ";cout<<endl;return;}for(i = 0; i < n; i++){if(!flag[i]){flag[i] = true;d[pos] = p[i];dfs(pos + 1);flag[i] = false;}}}int main(){int i;cin>>n;memset(flag, false, sizeof(flag));for(i = 0; i < n; i++)p[i] = i + 1;dfs(0);return 0;}