#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int num = 0;
int ok(int list[], int k, int i)
{
if (i > k)
{
for (int t = k; t < i; t++)
{
if (list[t] == list[i])
{
return 0;
}
}
}
return 1;
}
void perm(int list[], int k, int m)
{
if (k == m)
{
for (int i = 0; i <= m; i++)
printf("%d", list[i]);
cout << endl;
num ++;
}
else
{
for (int i = k; i <= m; i++)
{
if (ok(list, k, i))
{
swap(list[k], list[i]);
perm(list, k+1, m);
swap(list[k], list[i]);
}
}
}
}
int main()
{
int list[] = {1, 2, 2, 3};
//int list[] = {1};
int len = sizeof(list) / sizeof(list[0]);
perm(list, 0, len-1);
printf("num: %d\n", num);
return 0;
}