Pagini recente » Cod sursa (job #2786181) | Cod sursa (job #3214575) | Cod sursa (job #1425068) | Cod sursa (job #2948024) | Cod sursa (job #1842868)
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int s;int n,m,a[18][18];int sc;
/*int Calcul()
{ int i,j;int suma=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if((a[i][0]==0&&a[0][j]==0)||(a[i][0]==1&&a[0][j]==1)) suma=suma+a[i][j];
else suma=suma-a[i][j];
return suma;
}*/
void Back(int x,int y)
{ int i,j;
for(i=0;i<=1;i++)
{ a[x][y]=i;
if(i==1)
{ int ss=0;
if(x==0)
{ for(j=1;j<=n;j++) {ss=ss+a[j][y];a[j][y]=-a[j][y];}
sc=sc-2*ss;if(sc>s) s=sc;
if(y==m) Back(1,0);
else Back(0,y+1);
sc=sc+2*ss;
for(j=1;j<=n;j++) {a[j][y]=-a[j][y];}
}
else
{ for(j=1;j<=m;j++) {ss=ss+a[x][j];a[x][j]=-a[x][j];}
sc=sc-2*ss;if(sc>s) s=sc;
if(x!=n) Back(x+1,0);
sc=sc+2*ss;
for(j=1;j<=m;j++) {a[x][j]=-a[x][j];}
}
}
else
{if(x==0)
{ if(y==m) Back(1,0);
else Back(0,y+1);
}
else
{ if(x!=n) Back(x+1,0); }
}
}
}
int main()
{ fin>>n>>m;
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{fin>>a[i][j];
sc=sc+a[i][j];
}
Back(0,1);
fout<<s;
return 0;
}