求一个串的全排列。
思路:
全排列实际上就是前后元素不断交换得到的结果。
#include <iostream> #include <vector> using namespace std; void Perm(vector<int>& ivec, int begin) { if (begin == ivec.size()) { for (int i = 0; i < ivec.size(); ++i) cout << ivec[i] << ' '; cout << endl; } for (int i = begin; i < ivec.size(); ++i) { swap(ivec[i], ivec[begin]); Perm(ivec, begin+1); swap(ivec[i], ivec[begin]); } } void main() { int a[] = {1, 2, 3, 4}; vector<int> ivec(a, a + 4); Perm(ivec, 0); }