Pagini recente » Cod sursa (job #980172) | Cod sursa (job #2694482) | Cod sursa (job #525470) | Cod sursa (job #2357692) | Cod sursa (job #582546)
Cod sursa(job #582546)
#include<stdio.h>
const int N=12;
int n,nr;
char a[N][N],b[N][N];
int sol[N];
void prelucrare(int mx)
{
/*for(int i=1;i<=n;i++)
printf("%d ",sol[i]);
printf("\n");*/
for(int i=1;i<=mx;i++)
for(int j=1;j<=mx;j++)
b[i][j]='0';
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j]=='1')//daca i e prieten cu j
b[sol[i]][sol[j]] = '1';//atunci si echipa lui i (sol[i]) e prietena cu echipa lui j (sol[j])
for(int i=1;i<=mx;i++)
for(int j=1;j<=mx;j++)
if(b[i][j]!='1' && i!=j)
return ;
nr++;
}
void bkt(int p,int mx)
{
if(p-1==n)
{
prelucrare(mx);
return ;
}
for(int i=1;i<=mx+1;i++)
{
sol[p]=i;
if(i<=mx)
bkt(p+1,mx);
else
bkt(p+1,mx+1);
}
}
int main()
{
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
int i;
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
gets(1+a[i]);//1+a[i] = adresa lui a[i][1] = &a[i][1]
}
bkt(1,0);
printf("%d\n",nr-1);
return 0;
}