Pagini recente » Cod sursa (job #3223110) | Cod sursa (job #905474) | Borderou de evaluare (job #243721) | Cod sursa (job #515194) | Cod sursa (job #276605)
Cod sursa(job #276605)
#include <stdio.h>
#define FIN "flip.in"
#define FOUT "flip.out"
#define MAXN 17
int change[MAXN * 2], a[MAXN][MAXN], n, m, S;
void back(int k) {
int s = 0, i, j;
if (k == n) {
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
s += change[i] * change[n + j] * a[i][j];
if (s > S) {
S = s;
}
} else {
change[k] = 1; back (k+1);
change[k] = -1; back (k+1);
}
}
int main () {
int i, j;
FILE *fin = fopen(FIN, "rt");
FILE *fout = fopen(FOUT, "wt");
fscanf(fin, "%d %d", &n, &m);
for (i = 0; i < n; i++) for (j = 0; j < m; j++) fscanf(fin, "%d", &a[i][j]);
for (i = 0; i < n + m; i++) change[i] = -1;
back(0);
fprintf(fout, "%d\n", S);
fclose(fin);
fclose(fout);
return 0;
}