Pagini recente » Cod sursa (job #158504) | Cod sursa (job #3289239) | Cod sursa (job #1820325) | Cod sursa (job #1747616) | Cod sursa (job #2059312)
#include<cstdio>
#define MAX_N 13
using namespace std;
int sol[MAX_N], n, nrSol;
bool col[MAX_N], diag[2 * MAX_N], anti[2 * MAX_N];
FILE *fout = fopen("damesah.out","w");
void PlaseazaDama(int k) {
if(k == n) {
if(++nrSol == 1) {
for(int i=0; i<n; i++)
fprintf(fout,"%d ",1+sol[i]);
fprintf(fout,"\n");
}
} else {
for(int i=0; i<n; i++)
if(!col[i] && !diag[k - i + n - 1] && ! anti[k + i]) {
sol[k] = i;
col[i] = diag[k - i + n - 1] = anti[k + i] = 1;
PlaseazaDama(k+1);
col[i] = diag[k - i + n - 1] = anti[k + i] = 0;
}
}
}
int main() {
FILE *fin = fopen("damesah.in","r");
fscanf(fin,"%d",&n);
PlaseazaDama(0);
fprintf(fout,"%d\n",nrSol);
fclose(fin);
fclose(fout);
return 0;
}