Cod sursa(job #2096965)

Utilizator DimaTCDima Trubca DimaTC Data 30 decembrie 2017 10:46:51
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<bits/stdc++.h>

using namespace std;

ofstream fout("damesah.out");

int n,k2;
int a[30][30];
int MC[50],MD1[50],MD2[50];
bool v;

void BT(int k) {
	if (k==n+1) {
		k2++;
		if (k2==1) {
			for (int i=1; i<=n; i++) {
				for (int j=1; j<=n; j++) if (a[i][j]==1) fout<<j<<" ";
			} fout<<endl;
		}
		
		 return;
	}
	for (int j=1; j<=n; j++) {
		if (!(MC[j]==1 || MD1[k+j]==1 || k-j>=0 && MD2[k-j]==1 || k-j<0 && MD2[k-j+30]==1)) {
			MC[j]=1;
			MD1[k+j]=1;
			if (k-j<0) MD2[k-j+30]=1;
			else MD2[k-j]=1;
			a[k][j]=1;
			BT(k+1);
			a[k][j]=0;
			MC[j]=0;
			MD1[k+j]=0;
			if (k-j<0) MD2[k-j+30]=0;
			else MD2[k-j]=0;
		}
		
	}
	
	
}


int main() {
	ifstream cin("damesah.in");
	cin>>n;
	
	BT(1);
	fout<<k2;
	
}