Pagini recente » Cod sursa (job #2577785) | Cod sursa (job #3245164) | Cod sursa (job #2371797) | Cod sursa (job #1595515) | Cod sursa (job #464111)
Cod sursa(job #464111)
#include<fstream>
#include<iostream>
using namespace std;
char a[20][20];
int n,res,nr,l[20],m[20][20],ok[20],team[20];
void generate(int niv)
{
int i,j,k;
if(niv==n+1&&nr>1)
{
for(j=0;j<=19;++j)
ok[j]=0;
for(i=1;i<=nr;++i)
{
for(j=1;j<=l[i];++j)
for(k=1;k<=n;++k)
if(a[m[i][j]][k]=='1')
ok[team[k]]=i;
for(j=1;j<=nr;++j)
if(ok[j]!=i&&j!=i)
return;
}
++res;
return;
}
if(niv==n+1)
return;
for(i=1;i<=nr;++i)
{
m[i][++l[i]]=niv;
team[niv]=i;
generate(niv+1);
--l[i];
}
++nr;
m[nr][++l[nr]]=niv;
team[niv]=nr;
generate(niv+1);
--l[nr];
--nr;
}
int main()
{
int i,j;
ifstream read ("copii.in");
ofstream write ("copii.out");
read>>n;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
read>>a[i][j];
generate(1);
write<<res<<'\n';
return 0;
}