Pagini recente » Cod sursa (job #2957246) | Cod sursa (job #1017525) | Cod sursa (job #1920266) | Cod sursa (job #1672629) | Cod sursa (job #509709)
Cod sursa(job #509709)
#include <fstream>
#include <iostream>
using namespace std;
int n,a[101][101],x[101],rez;
void VerifSol(int mx){
int v[101][101];
for(int i=1;i<=mx;++i)
for(int j=1;j<=mx;++j)
v[i][j]=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(a[i][j]==1 && i-j && x[i]-x[j])
v[x[i]][x[j]]=1;
for(int i=1;i<=mx;++i)
for(int j=1;j<=mx;++j)
if(i-j && v[i][j]==0)
return ;
rez++;
}
void back(int k,int nn){
for(int i=1;i<=nn;++i){
x[k]=i;
if(k==n)
VerifSol(nn);
else
back(k+1,nn);
}
x[k]=nn+1;
if(k==n)
VerifSol(nn+1);
else
back(k+1,nn+1);
}
int NC=0;
void Gen(int k){
if(k==n+1)
VerifSol(NC);
else{
for(int i=1;i<=NC;++i){
x[k]=i;
Gen(k+1);
}
NC++;
x[k]=NC;
Gen(k+1);
NC--;
}
}
int main(){
ifstream fin("copii.in");
ofstream fout("copii.out");
fin>>n;
char s[111];
fin.getline(s,111);
for(int i=1;i<=n;++i){
fin.getline(s,111);
for(int j=1;j<=n;++j)
a[i][j]=s[j-1]-'0';
}
//Gen(1);
back(1,0);
fout<<rez-1<<endl;
return 0;
}