例如:
字符串 abc,全排列为:abc,acb,bac,bca,cab,cba
数字 123,全排列为:123,132,213,231,312,321
代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int tally = 0;
void swapChar(string & _data, int _i, int _j)
{
char c;
c = _data[_i];
_data[_i] = _data[_j];
_data[_j] = c;
}
void F(string _data, int _n)
{
if(_n == _data.length() - 1)
{
tally++;
cout << _data << endl;
return;
}
for(int i = _n; i < _data.length(); i++)
{
swapChar(_data, i, _n);
F(_data, _n + 1);
swapChar(_data, i, _n);
}
}
int main()
{
string data = "ABC";
//string data = "ABCDE";
F(data, 0);
cout << endl << "count:" << tally;
return 0;
}
图示理解: