Cod sursa(job #1211046)

Utilizator zeroblitz36FMI - Roscaneanu George zeroblitz36 Data 21 iulie 2014 22:25:26
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include<cstdio>
#include<conio.h>
FILE *in,*out;
int n,m,i,j,flag,poz1,poz2,s,min1,min2,smax=0;

void backtrack(int v[16][16])
{
    int w[16][16],s=0,i,j,lsum;
    int z_flag;
    /*for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
            printf("%d ",v[i][j]);
        putchar('\n');
    }
    putchar('\n');
    getch();*/
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        {
            w[i][j]=v[i][j];
            s+=v[i][j];
        }
    if(s>smax)smax=s;
    //linii
    for(i=0;i<n;i++)
    {
        lsum=0;
        z_flag=0;
        for(j=0;j<m;j++)
        {
            w[i][j]*=-1;
            lsum+=w[i][j];
            if(w[i][j]==0)z_flag++;
        }
        if(z_flag!=m)
        {
            if(lsum>0)backtrack(w);
            for(j=0;j<m;j++)w[i][j]*=-1;
        }
    }
    //coloane
    for(j=0;j<n;j++)
    {
        lsum=0;
        z_flag=0;
        for(i=0;i<n;i++)
        {
            w[i][j]*=-1;
            lsum+=w[i][j];
            if(w[i][j]==0)z_flag++;
        }
        if(z_flag!=n)
        {
            if(lsum>0)backtrack(w);
            for(i=0;i<n;i++)w[i][j]*=-1;
        }
    }
}
int main()
{
    in=fopen("flip.in","r");
    int v[16][16];
    fscanf(in,"%d %d",&n,&m);
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            fscanf(in,"%d",&v[i][j]);
    fclose(in);

    backtrack(v);

    out=fopen("flip.out","w");
    fprintf(out,"%d",smax);
    fclose(out);
}