Pagini recente » Cod sursa (job #473117) | Cod sursa (job #1149285) | Cod sursa (job #465857) | Cod sursa (job #1182159) | Cod sursa (job #2684765)
#include <iostream>
#include <stdio.h>
#define NMAX 16
using namespace std;
int mat[NMAX + 1][NMAX + 1], v[NMAX + 1], newmat[NMAX + 1][NMAX + 1];
int n, m, sol;
void solve() {
int sum, i, j, s;
for (i = 1; i <= n; i++) {
if (v[i] == 0)
for (j = 1; j <= m; j++)
newmat[i][j] = mat[i][j];
else
for (j = 1; j <= m; j++)
newmat[i][j] = -mat[i][j];
}
sum = 0;
for (i = 1; i <= m; i++) {
s = 0;
for (j = 1; j <= n; j++)
s += newmat[j][i];
if (s > 0)
sum += s;
else
sum -= s;
}
sol = max(sol, sum);
}
void backtr(int p) {
if (p == n + 1) {
solve();
return;
}
v[p] = 0;
backtr(p + 1);
v[p] = 1;
backtr(p + 1);
}
int main() {
FILE *fin, *fout;
int i, j;
fin = fopen("flip.in", "r");
fscanf(fin, "%d%d", &n, &m);
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
fscanf(fin, "%d", &mat[i][j]);
backtr(1);
fout = fopen("flip.out", "w");
fprintf(fout, "%d", sol);
fclose( fout );
return 0;
}