Pagini recente » Cod sursa (job #872204) | Cod sursa (job #1732897) | Cod sursa (job #40219) | Cod sursa (job #815073) | Cod sursa (job #672158)
Cod sursa(job #672158)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream in("copii.in");
ofstream out("copii.out");
const int N = 12;
char a[N][N];
int sol[N],n,rez;
void afisare()
{
for(int i=1 ; i<=n ; i++) out<<sol[i]<<" ";
out<<"\n";
}
void verif(int m)
{
char b[N][N];
int i,j;
for(i=1 ; i<=m ; i++)
for(j=1 ; j<=m ; j++)
b[i][j] = 0;
for(i=1 ; i<=n; i++)
for(j=1; j<=n; j++)
if(a[i][j] == '1')
b[sol[i]][sol[j]] = 1;
for(i=1 ; i<=m; i++)
for(j=1; j<=m; j++)
if(b[i][j] == 0 && i!=j) return;
//afisare();
rez++;
}
void bkt(int p,int m)
{
if(p-1 == n)
{
//afisare();
verif(m);
return ;
}
for(int i=1;i<=m+1;i++)
{
sol[p] = i;
if(i==m+1) bkt(p+1,m+1);
else bkt(p+1,m);
}
}
int main()
{
int i,j;
in >> n >> ws;
for(i=1;i<=n;i++)
{
in.getline(&a[i][1],N);
}
bkt(1,0);
out<<rez-1;
return 0;
}