Cod sursa(job #2477465)

Utilizator cameliapatileaPatilea Catalina Camelia cameliapatilea Data 20 octombrie 2019 13:43:07
Problema Copii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#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;

}