Pagini recente » Cod sursa (job #2900026) | Cod sursa (job #895328) | Cod sursa (job #1793229) | Cod sursa (job #2646165) | Cod sursa (job #614168)
Cod sursa(job #614168)
#include<cstdio>
#include<cstring>
const int N = 11;
char a[N][N] , b[N][N] , sol[N];
int n , s ;
void read()
{
freopen ( "copii.in" , "r" , stdin );
freopen ( "copii.out" , "w" ,stdout );
scanf( "%d\n" , &n );
for(int i=1 ; i<=n ; ++i)
{
gets(1+a[i]);
}
}
void verif(int m)
{
if(m==1) return;
/*
for(int i=1 ; i<=n ; i++)
printf("%d ",sol[i]);
printf("\n");
*/
for(int i=1 ; i<=m ; i++)
for(int j=1 ; j<=m ; j++)
b[i][j] = 0;
for(int i=1 ; i<=n ; ++i)
{
for(int j=1 ; j<=n ; ++j)
if(a[i][j]!='0')
{
b[sol[i]][sol[j]] = 1;
}
}
/*
for(int i=1 ; i<=m ; i++)
{
for(int j=1 ; j<=m ; j++)
printf("%5d",b[i][j]);
printf("\n");
}
*/
for(int i=1 ; i<=m ; i++)
for(int j=1 ; j<=m ; j++)
if(i!=j && b[i][j]==0)
return;
s++;
}
void bkt(int p , int m)
{
if (p-1==n)
{
verif(m);
return;
}
for(int i=1 ; i<=m ; ++i)
{
sol[p] = i;
bkt(p+1 , m);
}
sol[p] = 1+m;
bkt(p+1 , m+1);
}
void solve()
{
bkt(1,0);
printf( "%d\n" , s);
}
int main()
{
read();
solve();
return 0;
}