Pagini recente » Cod sursa (job #1035952) | Cod sursa (job #2865699) | Cod sursa (job #2142443) | Cod sursa (job #1555829) | Cod sursa (job #2497582)
#include <bits/stdc++.h>
using namespace std;
ifstream ci("damesah.in");
ofstream cou("damesah.out");
struct date{
int x,y,diag1,diag2;
};
int n,v[20][20],sol[100],t=1,cn;
date date[20];
/*
void rez(int i1,int j1){
cout<<"\n"<<i1<<" "<<j1<<"\n";
for(int j=1;j<=n;j++){
if(v[i1][j]==1 ){
swap(v[i1][j],v[i1][j1] );
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cout<<v[i][j]<<" ";
}
cout<<"\n";
}
cout<<"\n\n";
}
void Back1(int k){
if(k==n||t==1){
rez();
t1=1;
}else{
Back1(k+1);
}
}
void Back(int i,int j){
t1=0;
if(i==n ){
rez(i,j);
}else{
Back(i+1,j);
}
}
*/
void schimb(int i1,int j1){
int j;
for(j=1;j<=n;j++){
if(v[i1][j]==1 ){
swap(v[i1][j],v[i1][j1] );
}
}
}
void veri(){
int j,i,k=1;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(v[i][j]==1 ){
date[i].x=i;
date[i].y=j;
date[i].diag1=n-i+j;
date[i].diag2=j+i-1;
}
}
}
for(i=1;i<=n-1;i++){
for(j=i+1;j<=n;j++){
if(date[i].x==date[j].x ){k=0; }
if(date[i].y==date[j].y ){k=0; }
if(date[i].diag1==date[j].diag1 ){k=0; }
if(date[i].diag2==date[j].diag2 ){k=0; }
}
}
if(k==1){
cn++;
if(t==1){
for(i=1;i<=n;i++){
cou<<date[i].y<<" ";
}
t=0;
}
}
}
void Back(int i){
if(i==n+1){
return;
}else{
for(int j=1;j<=n;j++){
schimb(i,j);
veri();
Back(i+1);
}
}
}
int main()
{
ci>>n;
for(int i=1;i<=n;i++){
v[i][1]=1;
}
Back(1);
cou<<"\n"<<cn;
}