枚举:全排列
递归回溯实现的全排列:
// CreateTime: 2015-04-07 23:26:57 #include <iostream> using namespace std; int a[10]; int v[10]; void dfs(int n) { if (n == 10) { for (int i = 1; i <= 9; i++) { cout << a[i]; } cout << endl; return; } for (int i = 1; i <= 9; i++) { if (!v[i]) { v[i] = 1; a[n] = i; dfs(n+1); v[i] = 0; } } } int main(void) { dfs(1); return 0; }
algorithm库函数自带的全排列, next_permutation
// CreateTime: 2015-04-07 23:32:24 #include <iostream> #include <algorithm> using namespace std; int a[10]; int main(void) { for (int i = 0; i <= 9; i++) { a[i] = i+1; } do { for (int i = 0; i <= 2; i++) { cout << a[i]; } cout << endl; } while (next_permutation(a, a+3)); return 0; }
algorithm库函数自带的全排列, prev_permutation
// CreateTime: 2015-04-07 23:32:24 #include <iostream> #include <algorithm> using namespace std; int a[10]; int cmp(int a, int b) { return a > b; } int main(void) { for (int i = 0; i <= 9; i++) { a[i] = i+1; } sort(a, a+9, cmp); do { for (int i = 0; i <= 2; i++) { cout << a[i]; } cout << endl; } while (prev_permutation(a, a+3)); return 0; }