Pagini recente » Cod sursa (job #3317483) | Cod sursa (job #2058195) | Cod sursa (job #1665438) | Cod sursa (job #2339850) | Cod sursa (job #1097853)
/* Generare permutari folosind backtracking */
#include <cstdio>
bool Viz[10];
int X[10], N;
void Generate(int K)
{
for (int i = X[K] + 1; i <= N; i++)
if (Viz[i] == 0)
{
Viz[X[K]] = 0;
Viz[i] = 1;
X[K] = i;
return;
}
Viz[X[K]] = 0;
Generate(K - 1);
for (int i = 1; i <= N; i++)
if (Viz[i] == 0)
{
Viz[i] = 1;
X[K] = i;
return;
}
}
int main()
{
freopen("permutari.in","r",stdin);
freopen("permutari.out","w",stdout);
scanf("%d", &N);
for (int i = 1; i <= N; i++)
{
X[i] = i;
Viz[i] = 1;
}
do{
for (int i = 1; i <= N; i++) printf("%d ", X[i]);
printf("\n");
Generate(N);
} while (X[0] == 0);
}