Pagini recente » Cod sursa (job #3182538) | Cod sursa (job #2923042) | Cod sursa (job #3191859) | Cod sursa (job #2451018)
#include <iostream>
#include <fstream>
using namespace std;
int matrix[17][17], N, M, lines[17], cols[17];
ifstream fin("flip.in");
ofstream fout("flip.out");
long long s_max{-1800000000000};
void columns_backtracking(int column, int sign)
{
cols[column] = sign;
if(column == M)
{
long long s_current{0};
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++)
{
s_current += matrix[i][j]*lines[i]*cols[j];
}
}
s_max = max(s_max, s_current);
}
else {
columns_backtracking(column + 1, 1);
columns_backtracking(column + 1, -1);
}
}
void line_backtracking(int line, int sign)
{
lines[line] = sign;
if(line == N)
{
columns_backtracking(1, 1);
columns_backtracking(1, -1);
}
else
{
line_backtracking(line + 1, 1);
line_backtracking(line + 1, -1);
}
}
int main()
{
fin >> N >> M;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++)
{
fin >> matrix[i][j];
}
}
line_backtracking(1, 1);
line_backtracking(1, -1);
fout << s_max;
}