Pagini recente » Cod sursa (job #895011) | Cod sursa (job #2407260) | Cod sursa (job #2373482) | Cod sursa (job #2327610) | Cod sursa (job #2545711)
#include<iostream>
#include<fstream>
using namespace std;
const int N = 20;
const int M = 20;
int tabla[N][M] = {0};
int n, m;
int s = 0;
void backCol(int j);
int sum();
void flipLine(int i);
void flipCol(int j);
void backLine(int i)
{
if(i == n){
backCol(0);
return;
}
backLine(i + 1);
flipLine(i);
backLine(i + 1);
flipLine(i);
}
void backCol(int j)
{
if(j == m)
{
int suma = sum();
if(suma > s)
s = suma;
return;
}
backCol(j + 1);
flipCol(j);
backCol(j + 1);
flipCol(j);
}
int sum()
{
int suma = 0;
for (int i = 0; i < n;i++)
for (int j = 0; j < m;j++)
suma += tabla[i][j];
return suma;
}
void flipLine(int i) {
for (int j = 0; j < m; j++)
tabla[i][j] *= -1;
}
void flipCol(int j) {
for (int i = 0; i < n; i++)
tabla[i][j] *= -1;
}
int main()
{
ifstream fin("flip.in");
ofstream fout("flip.out");
fin >> n;
fin >> m;
for (int i = 0; i < n;i++)
for (int j = 0; j < m;j++)
fin >> tabla[i][j];
backLine(0);
fout << s;
return 0;
}