Pagini recente » Cod sursa (job #435924) | Cod sursa (job #2034835) | Cod sursa (job #2933146) | Cod sursa (job #1298700) | Cod sursa (job #2685219)
#include <stdio.h>
#define MAX_N 16
int mat[MAX_N][MAX_N], coefLin[MAX_N];
int n, m, maxSum;
int sumaMat() {
int sumaTot, sumaCol, l, c;
sumaTot = 0;
for( c = 0; c < m; c++ ) {
sumaCol = 0;
for( l = 0; l < n; l++ )
sumaCol += mat[l][c] * coefLin[l];
sumaTot = sumaTot + (sumaCol > 0 ? sumaCol : -sumaCol );
}
return sumaTot;
}
void flip( int lin ) {
int s, coef;
if ( lin == n ) {
s = sumaMat();
maxSum = s > maxSum ? s : maxSum;
} else {
for ( coef = -1; coef <= 1; coef += 2 ) {
coefLin[lin] = coef;
flip( lin + 1 );
}
}
}
int main() {
FILE *fin, *fout;
int l, c;
fin = fopen( "flip.in", "r" );
fscanf( fin, "%d%d", &n, &m );
for ( l = 0; l < n; l++ ) {
for ( c = 0; c < m; c++ )
fscanf( fin, "%d", &mat[l][c] );
}
fclose( fin );
maxSum = 0;
flip( 0 );
fout = fopen( "flip.out", "w" );
fprintf( fout, "%d", maxSum );
fclose( fout );
return 0;
}