Pagini recente » Cod sursa (job #1741070) | Cod sursa (job #3184992) | Cod sursa (job #2666206) | Cod sursa (job #3129152) | Cod sursa (job #2033268)
#include <fstream>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
int n, m, maxim, suma;
int v[20][20], actual[20][20], forma[20], coloana[20];
void backtracking (int k)
{
if (k == n + 1)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
if (forma[i] == 1)
actual[i][j] = v[i][j];
else
actual[i][j] = v[i][j] * (-1);
coloana[j] = coloana[j] + actual[i][j];
}
}
for (int i = 1; i <= m; i++)
{
if (coloana[i] < 0)
coloana[i] = coloana[i] * (-1);
suma = suma + coloana[i];
coloana[i] = 0;
}
if (suma > maxim)
maxim = suma;
suma = 0;
return;
}
forma[k] = 1;
backtracking(k + 1);
forma[k] = -1;
backtracking(k + 1);
}
int main()
{
in >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
in >> v[i][j];
backtracking(1);
out << maxim;
return 0;
}