Pagini recente » Cod sursa (job #3210483) | Cod sursa (job #68700) | Cod sursa (job #1372513) | Cod sursa (job #1864588) | Cod sursa (job #1576116)
#include<fstream>
using namespace std;
FILE*in;
ofstream out("flip.out");
long FLIP[18][18];
int nr_lin;
int nr_col;
bool comutator[18]; // pe linii; true inseamna ca este pornit
long suma_maxima;
void read()
{
in=fopen("flip.in", "r");
fscanf(in, "%d%d", &nr_lin, &nr_col);
for (int i=1; i<=nr_lin; i++)
for (int j=1; j<=nr_col; j++)
fscanf(in, "%ld", &FLIP[i][j]);
}
void BKT(int step)
{
if (step == nr_lin+1)
{
long suma_matrice=0;
for (int j=1; j<=nr_col; j++)
{
long suma_coloana=0;
for (int i=1; i<=nr_lin; i++)
if (comutator[i])
suma_coloana+=FLIP[i][j]*(-1);
else
suma_coloana+=FLIP[i][j];
if (suma_coloana < 0)
suma_coloana*=-1;
suma_matrice+=suma_coloana;
}
if (suma_matrice > suma_maxima)
suma_maxima=suma_matrice;
}
else
{
comutator[step]=false;
BKT(step+1);
comutator[step]=true;
BKT(step+1);
}
}
void show()
{
out<<suma_maxima;
}
int main()
{
read();
BKT(1);
show();
return 0;
}