Pagini recente » Cod sursa (job #264817) | Cod sursa (job #442675) | Cod sursa (job #2511137) | Cod sursa (job #2164034) | Cod sursa (job #2206664)
#include<iostream>
#include<fstream>
using namespace std;
int n, m, a[100][100], st[200];
int suma(int a[100][100], int n, int m)
{
int s1 = 0;
for (int o = 1; o <= n; o++)
for (int O = 1; O <= m; O++)
s1 += a[o][O];
return s1;
}
void bktr(int k, int & max)
{
int b[100][100], s;
for (int i = -1; i <= 1; i = i + 2)
{
st[k] = i;
if (k == n + m)
{
for (int p = 1; p <= n; p++)
for (int q = 1; q <= m; q++)
b[p][q] = a[p][q];
for (int p = 1; p <= k; p++)
if (st[p] == -1)
{
if (p <= n)
for (int j = 1; j <= m; j++)
b[p][j] = b[p][j] * (-1);
else
for (int j = 1; j <= n; j++)
b[j][p - n] = b[j][p - n] * (-1);
}
s = suma(b, n, m);
if (s > max)
max = s;
}
else
bktr(k + 1,max);
}
}
int main()
{
ifstream f("flip.in");
f >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
f >> a[i][j];
f.close();
int max = suma(a, n, m);
bktr(1,max);
ofstream g("flip.out");
g << max;
g.close();
}