Pagini recente » Cod sursa (job #1547634) | Cod sursa (job #1842345) | Cod sursa (job #2099099) | Cod sursa (job #2098900) | Cod sursa (job #1868210)
#include <cstdio>
using namespace std;
FILE *f, *g;
int n;
int a[20][20];
int p[20][20];
void readFile()
{
f = fopen("copii.in", "r");
fscanf(f, "%d", &n);
int i, j;
for(i = 1; i <= n; i ++)
{
fgetc(f);
for(j = 1; j <= n; j ++)
p[i][j] = fgetc(f) - '0';
}
fclose(f);
}
int rez;
int stk[20];
void verif(int k, int mx)
{
int i;
int j;
for(i = 1; i <= k; i ++)
{
// printf("%d ", stk[i]);
for(j = 1; j <= k; j ++)
a[stk[i]][stk[j]] = p[stk[i]][stk[j]];
}
// printf("\n");
for(i = 1; i <= mx; i ++)
{
for(j = 1; j <= mx; j ++)
{
if(i != j && a[i][j] == 0)
return;
a[i][j] = 0;
}
}
rez ++;
}
inline int mxa(int a, int b)
{
return (a > b ? a : b);
}
void bkt(int k, int mx)
{
if(k == n + 1)
{
verif(k - 1, mx);
}
else
{
int i;
// printf("%d %d\n", mx + 1, k);
for(i = 1; i <= mx + 1; i ++)
{
stk[k] = i;
bkt(k + 1, mxa(i, mx));
}
}
}
void solve()
{
g = fopen("copii.out", "w");
bkt(1, 0);
fprintf(g, "%d\n", rez - 1);
fclose(g);
}
int main()
{
readFile();
solve();
return 0;
}