#include <iostream>
#include <unordered_set>
#include <string>
std::unordered_set<std::string> tmp_uset;
void printPermutation(char* str, int curr, int n)
{
static int s_cnt = 0;
if (str == nullptr || curr >= n) {
return;
}
if (n == curr + 1) {
++s_cnt;
std::cout << str << " =" << s_cnt
<< std::endl;
tmp_uset.insert(std::string(str));
return;
}
for (int i = curr; i < n; ++i)
{
std::swap(str[curr], str[i]);
printPermutation(str, curr+1, n);
std::swap(str[curr], str[i]);
}
}
int main(int argc, char** argv)
{
char arr[6] = "abcde";
printPermutation(arr, 0, 5);
std::cout << "Hello World!\n" << "tmp_uset.size()==" << tmp_uset.size();
return 0;
}