Pagini recente » Cod sursa (job #2667126) | Cod sursa (job #1079408) | Cod sursa (job #1016821) | Cod sursa (job #1964666) | Cod sursa (job #530439)
Cod sursa(job #530439)
#include <stdio.h>
long int j, nr, rez, n, lg;
long int v[12], pe[12], o[12];
bool ok;
char s[12];
void citire()
{
long int i;
scanf("%ld",&n);
for (j=1;j<=n;j++)
{
scanf("%s",&s);
nr=0;
for (i=0;i<n;i++)
nr+=(1<<(i+1))*(s[i]-'0');
v[j]=nr;
}
}
void verificare()
{
long int i;
ok=true;
if (lg==1)
ok=false;
for (i=1;i<=lg;i++)
for (j=1;j<=lg;j++)
if (i!=j)
if ((pe[i] & o[j])==0)
{ ok=0; break; }
rez+=ok;
}
void gen(long int poz)
{
long int pran, i;
if (poz==n+1)
verificare();
else
{
for (i=1;i<=lg;i++)
{
o[i]=o[i]+(1<<poz); pran=pe[i]; pe[i]=pe[i] | v[poz];
gen(poz+1);
o[i]=o[i]-(1<<poz); pe[i]=pran;
}
o[++lg]=1<<poz; pe[lg]=v[poz];
gen(poz+1);
lg--;
}
}
int main()
{
freopen("copii.in","r",stdin);
freopen("copii.out","w",stdout);
citire();
gen(1);
printf("%ld",rez);
return 0;
}