Cod sursa(job #1721560)

Utilizator otnielMercea Otniel otniel Data 25 iunie 2016 22:35:06
Problema Copii Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<stdio.h>
int sol[11],n,maxim;
int nr;
int a[11][11];
int c[12][13];
int back(int k)
{
    int i,j,maxprec;
    if(k==n+1)
    {
        maxim=1;
        for(i=1;i<=n;i++)
        {if(maxim<sol[i])
        maxim=sol[i];
        }

        if(maxim>1)
        {
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
            {

                if(a[i][j]==1)
                {
                   c[sol[i+1]][sol[j+1]]++;

                }

            }
            int vr=0;
         for(i=1;i<=maxim;i++)
            {for(j=i+1;j<=maxim;j++)
                {if(c[i][j]==0)
                vr=1;
                c[i][j]=0;
                }
                }
                if(!vr)
                {
                nr++;}
        }
    }
    else
    {
        maxprec=0;
        for(j=1;j<=k-1;j++)
        if(maxprec<sol[j])
        maxprec=sol[j];
        for(i=1;i<=maxprec+1;i++)
            {
            sol[k]=i;
            back(k+1);

            }
    }
}
int main()
{

    FILE *f;
    f=fopen("copii.in","r");
    fscanf(f,"%d\n",&n);
    int i,j;
    for(i=0;i<n;i++)
     {char c;
        for(j=0;j<n;j++)
        {

            fscanf(f,"%c",&c);
            a[i][j]=c-48;

        }
        fscanf(f,"%c",&c);
     }
    back(1);
    FILE *g;
    g=fopen("copii.out","w");
    fprintf(g,"%d",nr);
}