Witam
mam do napisania program, który generuje permutacje. Dla problemu znajdowania wszystkich permutacji znalazłem algorytm. Natomiast nie wiem, jak usunąć powtarzające się permutacje
np dla zbioru (1,1,3) program powinien wypisywać na wyjśce: (1,1,3), (1,3,1), (3,1,1). Algorytm generuje natomiast wszystkie powtarzające się permutacje. Nie wiem jak zmienić kod, tak aby nie pojawiały się powtarzające się permutacje.
Poniżej kod:
#include "stdafx.h"
#include <stdio.h>
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void print(int tab[], int size)
{
for (int i = 0; i < size; i++)
printf("%d ",tab[i]);
}
void perm(int tab[], int size)
{
if (size == 1)
{
print(tab, 3);
printf("\n");
}
else
{
for (int i = 0; i < size; i++)
{
swap(&tab[i], &tab[size - 1]);
perm(tab, size - 1);
swap(&tab[i],&tab[size-1]);
}
}
}
int main()
{
int tab[3] = { 1,2,3 };
perm(tab, 3);
return 0;
}