Pagini recente » Cod sursa (job #2400091) | Cod sursa (job #2067856) | Cod sursa (job #1606856) | Cod sursa (job #1616618) | Cod sursa (job #644408)
Cod sursa(job #644408)
# include <fstream>
using namespace std;
ifstream f ("copii.in");
ofstream g ("copii.out");
int a[100],n,j,i,k,fr[100];
char m[100][100];
int verif (int n)
{
int i,j,max=0,q;
for (i=1;i<=n;i++)
if (max<a[i])
max=a[i];
if (max==1)
return 0;
for (i=1;i<=max;i++)
{
for (j=1;j<=max;j++)
fr[j]=0;
for (j=1;j<=n;j++)
if (a[j]==i)
for (q=1;q<=n;q++)
if (m[j][q]=='1')
fr[a[q]]=1;
for (q=1;q<=max;q++)
if (q!=i)
if (fr[q]==0)
return 0;
}
k++;
return 1;
}
int valid (int i)
{
int j,max=0;
for (j=1;j<i;j++)
if (max<a[j])
max=a[j];
if (a[i]>max+1)
return 0;
return 1;
}
void back (int i)
{
int val;
for (val=1;val<=n;val++)
{
a[i]=val;
if (valid (i))
if (i==n)
verif (i);
else
back (i+1);
}
}
int main ()
{
f>>n;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
f>>m[i][j];
back (1);
g<<k;
}