Pagini recente » Cod sursa (job #2266149) | Cod sursa (job #699251) | Cod sursa (job #2919399) | Cod sursa (job #389459) | Cod sursa (job #1631765)
#include<stdio.h>
long a[20][20], smax;
int n, m;
void citire(){
FILE *f = fopen("flip.in", "r");
fscanf(f, "%d%d", &n, &m);
int i,j;
for(i = 0; i < n; i++)
for( j = 0; j < m; j++)
fscanf(f, "%ld", &(a[i][j]) );
fclose(f);
}
void facesuma(){
int i,j;
long suma;
suma = 0;
for( i = 0; i < n; i++)
for( j = 0; j < m; j++)
suma += a[i][j];
if( smax < suma)
smax = suma;
}
void schimbalinie(int linie){
int j;
for( j = 0; j < m; j++)
a[linie][j] = -a[linie][j];
}
void schimbacol(int col){
int i;
for( i = 0; i < n; i++)
a[i][col] = -a[i][col];
}
void backtracking(int k){
if( k == n + m){
facesuma();
return;
}
backtracking(k + 1);
if( k < n){
schimbalinie(k);
}
else
schimbacol(k - n);
backtracking(k + 1);
}
int main(){
citire();
smax = 0;
backtracking(0);
FILE *f = fopen("flip.out", "w");
fprintf(f, "%ld", smax);
fclose(f);
return 0;
}