Pagini recente » Istoria paginii runda/vacanta_10_3/clasament | Cod sursa (job #2705608) | Istoria paginii runda/gimnaziu_4/clasament | Cod sursa (job #1703097) | Cod sursa (job #599389)
Cod sursa(job #599389)
/*
* permutari.c
*
* Created on: Jun 28, 2011
* Author: mihai
*/
#include <stdio.h>
#define MAX 8
int N;
int check(int * sol, int poz, int val) {
int i, j;
sol[poz] = val;
for (i = 0; i < poz; i++) {
if (sol[i] == val)
return 0;
}
if (poz == N - 1) {
for (i = 0; i < N; i++) {
for (j = 0; j < N && j != i; j++) {
if (sol[i] == sol[j])
return 1;
}
}
for (i = 0; i < N; i++)
printf("%d ", sol[i] + 1);
printf("\n");
}
return 1;
}
void back(int poz, int* sol) {
if (poz >= N)
return;
int j;
for (j = 0; j < N; j++) {
if (check(sol, poz, j)) {
sol[poz] = j;
back(poz + 1, sol);
}
}
}
int main() {
freopen("permutari.in", "r", stdin);
freopen("permutari.out", "w", stdout);
int sol[MAX], i;
scanf("%d", &N);
for (i = 0; i < N; i++)
sol[i] = -1;
back(0, sol);
return 0;
}