比如这里所说的全排列{"a","b","c","d"};
1。首先四个字母的全排列可以被简化成分别以"a"、"b"、"c"、"d"打头,加上剩下三个字母的全排列;
2。以此类推,上一步中的每一个三个字母的全排列,又可以被简化为分别以三个字母打头,加上剩下两个字母的全排列
3。重复前面的简化过程,直到只剩一个字母的时候,就很容易了处理了,因为一个字母的全排列太显而易见了
void pailie(string& str, int s, int t) { if(s==t) { cout << str << endl; return; } for(int i=s; i<=t; i++) { swap(str[s], str[i]); pailie(str, s+1, t); swap(str[s], str[i]); } }