Pagini recente » Cod sursa (job #426538) | Cod sursa (job #181421) | Cod sursa (job #1775089) | Cod sursa (job #2012062) | Cod sursa (job #1211046)
#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);
}