Pagini recente » Cod sursa (job #2256175) | Rating Mihai Venczel (mihaivenczel) | Cod sursa (job #2169392) | Cod sursa (job #2687316) | Cod sursa (job #1150431)
#include <stdio.h>
#include <stdlib.h>
int M[16][16], aux[32];
int n, m, smax;
void comuta(char mod, int id);
void citesteMat(FILE *f)
{
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
fscanf(f, "%d", &M[i][j]);
return;
}
#if 0
int sumCol(int idCol)
{
int s=0;
for(int i=0; i<n; i++)
s+=M[i][idCol];
return s;
}
int sumLin(int idLin)
{
int s=0;
for(int i=0; i<m; i++)
s+=M[idLin][i];
return s;
}
#endif
int sumMat()
{
int s=0,i,j;
for(i=0; i<n; i++)
if(aux[i]) comuta('l', i);
for(;i<n+m;i++)
if(aux[i]) comuta('c', i-n);
for(i=0; i<n; i++)
for(j=0; j<m; j++)
s+=M[i][j];
return s;
}
void comuta(char mod, int id)
{
switch(mod)
{
case 'l': for(int i=0; i<m; i++) M[id][i]*=(-1); break;
case 'c': for(int i=0; i<n; i++) M[i][id]*=(-1); break;
default: break;
}
return;
}
void back(int k)
{
if(k==n+m)
{
int s=sumMat();
if(s>smax) smax=s;
}
else
{
aux[k]=1;
back(k+1);
aux[k]=0;
back(k+1);
}
return;
}
int main()
{
FILE *fi, *fo;
fi=fopen("flip.in", "r");
fo=fopen("flip.out", "w");
fscanf(fi, "%d %d", &n, &m);
citesteMat(fi);
back(0);
fprintf(fo, "%d", smax);
fclose(fi);
fclose(fo);
return 0;
}