Cod sursa(job #1473359)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 19 august 2015 08:50:11
Problema Problema Damelor Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#define MAX 15
 
int n, a[MAX], nr, col[MAX], diagp[2 * MAX], diags[2 * MAX];
 
void bk(int k);

int main(){
	freopen("damesah.in", "r", stdin);
	freopen("damesah.out", "w", stdout);
	scanf("%d", &n);
	bk(1);
	printf("\n%d\n", nr);
	return 0;
}
 
void bk(int k){
	int i, j;
	for(i = 1; i <= n; i++)
		if(!col[i] && !diagp[n - i + k] && !diags[i + k - 1]){
			a[k] = i;
			if(k == n){
				nr++;
				if(nr == 1)
					for(j = 1; j <= n; j++)
						printf("%d ", a[j]);
			}
			col[i] = diagp[n - i + k] = diags[i + k - 1] = 1;
			bk(k + 1);
			col[i] = diagp[n - i + k] = diags[i + k - 1] = 0;
		}
}