Pagini recente » Cod sursa (job #1854866) | Cod sursa (job #2442260) | Cod sursa (job #2488086) | Cod sursa (job #1437161) | Cod sursa (job #1987630)
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
char input[20] = "flip.in";
char output[20] = "flip.out";
char n, m, x, v[20][20];
short l[20], c[20];
short sel[40];
int max = INT_MIN;
void suma()
{
int s = 0,i,j;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
{
if (!l[i] && !c[j] || l[i] && c[j])
s += v[i][j];
else
s -= v[i][j];
}
if (s>max) max=s;
}
void afisare()
{
int i;
for (i = 0; i < m + n; i++)
printf("%d ", sel[i]);
putchar('\n');
}
int solutie(int k)
{
if(k==x-1) return 1;
else return 0;
}
void back(int k)
{
int i, j;
if (k > x)
return;
for (i = 0; i < 2; i++)
{
sel[k] = i;
if (k<n) l[k]=i;
else c[k-n]=i;
if (solutie(k))
suma();
else back(k+1);
}
}
int main()
{
FILE *f = fopen(input, "r");
FILE *g = fopen(output, "w");
fscanf(f, "%d", &n);
fscanf(f, "%d", &m);
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
fscanf(f, "%d", &v[i][j]);
x = m + n;
for (i = 0; i < n; i++)
l[i] = 0;
for (j = 0; j < m; j++)
c[j] = 0;
for (i = 0; i < n + m; i++)
sel[i] = 0;
back(0);
fprintf(g,"%d",max);
fclose(f);
fclose(g);
return 0;
}