Pagini recente » Cod sursa (job #1711313) | Cod sursa (job #1058971) | Cod sursa (job #1239082) | Cod sursa (job #67616) | Cod sursa (job #530238)
Cod sursa(job #530238)
#include <stdio.h>
long int i, j, nr, rez, n, lg;
long int v[12], pe[12], o[12];
bool ok;
char s[12];
void citire()
{
scanf("%ld",&n);
for (i=1;i<=n;i++)
{
scanf("%s",&s);
nr=0;
for (i=0;i<n;i++)
nr+=1<<(i+1);
v[i]=nr;
}
}
void verificare()
{
ok=true;
for (i=1;i<=lg;i++)
for (j=1;j<=lg;j++)
if (i!=j)
if (pe[i] & o[j]==0)
{ break; ok=0; }
rez+=ok;
}
void gen(long int poz)
{
long int pran;
if (poz==n+1)
verificare();
else
{
for (i=1;i<=lg;i++)
{
o[i]=o[i]+(1<<i); pran=pe[i]; pe[i]=pe[i] | v[poz];
gen(poz+1);
o[i]=o[i]-(1<<i); pe[i]=pran;
}
o[++lg]=1<<i; 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-1);
return 0;
}