Pagini recente » Cod sursa (job #922150) | Cod sursa (job #2270274) | Cod sursa (job #2262980) | Cod sursa (job #330415) | Cod sursa (job #2324144)
#include <cmath>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n, m, matrix[16][16], Stotal = 0, flip[16], indAnt[17];
int CalculeazaSuma()
{
int suma = 0, i, suma2;
for (int j=0; j<m; j++)
{
suma2 = 0;
for (i=0; i<n; i ++)
if (flip[i])
suma2 += - matrix[i][j];
else
suma2 += matrix[i][j];
suma += abs(suma2);
}
return suma;
}
void backtracking(int k)
{
int SumaPas;
for (int i = indAnt[k]; i<n; i++)
{
indAnt[k+1]=i+1;
flip[i] = 1;
SumaPas = CalculeazaSuma();
if (SumaPas > Stotal)
Stotal = SumaPas;
backtracking(k+1);
flip[i] = 0;
}
}
int main()
{
f >> n >> m;
int i, j;
for (i=0; i<n; i++)
for(j=0; j<m; j++)
f >> matrix[i][j];
backtracking(0);
g << Stotal;
return 0;
}