Pagini recente » Cod sursa (job #846042) | Cod sursa (job #2774902) | Cod sursa (job #2927739) | Cod sursa (job #2766774) | Cod sursa (job #2757621)
#include <iostream>
#include <fstream>
using namespace std;
int n, m, a[16][16], semn_linie[16], semn_coloana[16], maxim;
void Citire()
{
ifstream f("flip.in");
f >> n >> m;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
f >> a[i][j];
}
int Suma()
{
int s = 0;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
s = s + semn_linie[i] * semn_coloana[j] * a[i][j];
return s;
}
void BackSemnColoane(int coloana)
{
if(coloana == m)
{
int suma = Suma();
if(suma > maxim)
maxim = suma;
}
else
{
semn_coloana[coloana] = 1;
BackSemnColoane(coloana + 1);
semn_coloana[coloana] = -1;
BackSemnColoane(coloana + 1);
}
}
void BackSemnLinii(int linie)
{
if(linie == n)
{
BackSemnColoane(0);
}
else
{
semn_linie[linie] = 1;
BackSemnLinii(linie + 1);
semn_linie[linie] = -1;
BackSemnLinii(linie + 1);
}
}
void Afisare()
{
ofstream g("flip.out");
g << maxim;
}
int main()
{
Citire();
BackSemnLinii(0);
Afisare();
return 0;
}