Pagini recente » Cod sursa (job #2964257) | Cod sursa (job #1123241) | Cod sursa (job #2129201) | Cod sursa (job #1172171) | Cod sursa (job #2036374)
#include <fstream>
using namespace std;
ifstream fin("copii.in");
ofstream fout("copii.out");
int v[11], n, S;
char A[11][11];
int a[11][11], nr[11];
void print(int m)
{
bool b[11][11] = {false};
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (A[i][j] == '1')
{
b[v[i]][v[j]] = true;
}
}
}
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= m; j++)
{
if (i != j && !b[i][j]) return;
}
}
S++;
}
/*void bkt(int k)
{
if (k - 1 == n)
{
print();
return;
}
for (int i = 1; i <= nr[k - 1] + 1; i++)
{
v[k] = i;
nr[k] = nr[k - 1];
if (i == nr[k] - 1)
{
++nr[k];
}
bkt(k + 1);
if (i == nr[k] - 1)
{
nr[k] = nr[k - 1];
}
}
if (k != 1)
{
++nr[m + 1];
bkt(k + 1, m + 1);
--nr[m + 1];
}
}*/
void bkt(int k, int m)
{
if (k - 1 == n)
{
print(m);
return;
}
for (int i = 1; i <= m; i++)
{
v[k] = i;
//a[i][++nr[i]] = k;
bkt(k + 1, m);
//--nr[i];
}
//a[m + 1][++nr[m + 1]] = k;
v[k] = m + 1;
bkt(k + 1, m + 1);
//--nr[m + 1];
}
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
{
fin >> 1 + A[i];
}
bkt(1, 0);
fout << S - 1;
fin.close();
fout.close();
return 0;
}