这里只用A,B,C,D,E当样例,其他个数的样例算法思想一致。
#include <iostream>
#include <string>
#include <map>
using namespace std;
map<char,int> m;
int number = 0;
void dfs(string result,int count)
{
if(count == 5)
{
number++;
cout << number << ": " << result << endl;
}
for(char c = 'A';c <= 'E';c++)
{
if(m[c] == 0)
{
string s = result + c;
m[c] = 1;
dfs(s,count + 1);
m[c] = 0;
}
}
}
int main()
{
string result = "";
m.clear();
dfs(result,0);
return 0;
}