Pagini recente » Cod sursa (job #2233035) | Cod sursa (job #2270774) | Cod sursa (job #3187184) | Cod sursa (job #3282383) | Cod sursa (job #2477465)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("copii.in");
ofstream g("copii.out");
int n, comb = 0;
int solution[1050];
char copii[25][25];
bool verif[25][25] = {false};
void calcul(int mid)
{
for(int i = 1;i <= mid; i++)
for(int j = 1; j <= mid; j++)
verif[i][j] = false;
for(int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
if (copii[i][j] == '1')
verif[solution[i]][solution[j]] = true;
}
for(int i = 1; i <= mid; i++)
{
for(int j = 1; j <= mid; j++)
if(verif[i][j] == false)
{
if(i != j)
{
return;
}
}
}
comb++;
}
void backTracking(int poz, int mid)
{
int aux = mid;
if(poz == n + 1)
{
calcul(mid);
return;
}
for(int i = 1; i < aux + 2; i++)
{
if(mid < i)
mid = i;
solution[poz] = i;
backTracking(poz + 1, mid);
}
}
int main()
{
f >> n ;
f.get();
for(int i = 1; i <= n; i++)
f.getline(1 + copii[i], 25);
backTracking(1, 0);
g<< comb -1;
}