// Dette program finder antallet af følger af N tal, hvor to på hinanden følgende tal

#include <stdio.h>

#define N 10

// x er følgen indtil videre, i er den plads vi vil til at fylde ud, og n er den værdi vi forsøger at at proppe ind på index i
int f(int x[], int i, int n, int *c) {
	int j;

	// Er n blevet brugt før?
	for(j=0;j<i; j++) if(n==x[j]) return 0;

	// Er n lovlig nok?
	if((i > 0 && x[i-1]==n-1) || x[i-1]==n+1) return 0;

	// Den er god nok!
	x[i] = n;

	// Hvis n er den sidste vi skal placere, er det en valid følge!
	if(i==N-1) {
		for(j=0;j<N;j++) printf("%d ", x[j]);
		printf("\n");
		(*c)++;
		return 1;
	}

	for(j=1;j<=N;j++) f(x, i+1, j, c);

	return 0;	
}

int main(int argc, char* argv[])
{
	int x[N];
	int j,a=0;
	
	int* c = &a;

	// Clear array
	for(j=0; j<N; j++)
		x[j]=0;

	// Sæt igang!	
	for(j=1; j<=N; j++)
		f(x, 0, j, c);

	printf("#V(n)=%u\n", *c);

	return 0;
}

