void permute(string s) { sort(s.begin(),s.end()); cout<<s<<endl; while(next_permutation(s.begin(),s.end())) cout<<s<<endl; }
上面的是标准库的迭代版本。
下面的是递归版本
void permute(string s,unsigned k) { if (k == s.length()-1) { cout<<s<<endl; } for (unsigned i = k;i<s.length();++i) { swap(s[i],s[k]); permute(s,k+1); } }