Pagini recente » Cod sursa (job #2457811) | Cod sursa (job #784561) | Cod sursa (job #719563) | Cod sursa (job #135739) | Cod sursa (job #1723526)
#include <stdio.h>
#include <stdlib.h>
int n, v[10], p[10][10], x=0;
void afisare(int nr, FILE *g)
{
int i, j, k, ok=0, ap[10];
for(i=0; i<n-1; i++)
if(v[i] != v[n-1])
ok = 1;
if(!ok)
return;
for(k=0; k<nr; k++)
{
for(i=0; i<nr; i++)
ap[i]=0;
for(i=0; i<n; i++)
if(v[i]==k)
for(j=0; j<n; j++)
if(p[i][j] == 1)
ap[v[j]]=1;
for(j=0; j<nr; j++)
if(k!=j && !ap[j])
return;
}
++x;
}
void back(int k, int nr, FILE *g)
{
int i;
if(k == n)
afisare(nr, g);
else
{
for(i=0; i<=nr; i++)
{
v[k] = i;
if(i==nr)
back(k+1, nr+1, g);
else
back(k+1, nr, g);
}
}
}
int main()
{
FILE *f = fopen("copii.in", "r");
FILE *g = fopen("copii.out", "w");
int i, j;
fscanf(f, "%d", &n); fgetc(f);
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
p[i][j] = fgetc(f) - '0';
fgetc(f);
}
back(0, 0, g);
fprintf(g, "%d ", x);
fclose(f);
fclose(g);
return 0;
}