Pagini recente » Cod sursa (job #1220472) | Cod sursa (job #38667) | Cod sursa (job #504022) | Cod sursa (job #2308841) | Cod sursa (job #615717)
Cod sursa(job #615717)
#include <stdio.h>
using namespace std;
char a[12][12],b[12][12];
int n,sol[12],nr;
void prelucrare(int m)
{
/*
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]=='1') b[sol[i]][sol[j]] = '1';
for(int i=1 ; i<=m ; i++)
for(int j=1 ; j<=m ; j++)
if(i!=j && b[i][j] == '0') return;
++nr;
}
void bkt(int p,int m)
{
if(p-1==n)
{
prelucrare(m);
return;
}
for(int i=1;i<=m;i++)
{
sol[p]=i;
bkt(p+1,m);
}
sol[p]=m+1;
bkt(p+1,m+1);
}
int main()
{
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
scanf("%d\n",&n);
for(int i=1;i<=n;i++)
gets(a[i]+1);
bkt(1,0);
printf("%d\n",nr-1);
return 0;
}