Pagini recente » Cod sursa (job #1742637) | Cod sursa (job #1705732) | Cod sursa (job #1115907) | Cod sursa (job #876252) | Cod sursa (job #2529825)
#include <iostream>
#include<fstream>
using namespace std;
int x4[16], n4;
int i,j, N,M, a[16][16];
long long suma2, summax , sump ;
ifstream f("flip.in");
ofstream g ("flip.out");
void citire()
{
f>>M>>N;
for(i=0; i<M; i++)
for(j=0; j<N; j++)
f>>a[i][j];
}
void minus1( int k)
{
for(j=0; j<=N; j++)
a[k][j]*=-1;
}
void copiere()
{
for(i=0; i<M; i++)
if(x4[i]==1)
{
minus1(i);
x4[i]=0;
}
}
void BackRec4(int k)
{
int p;
for(p=0; p<=1; p++)
{
x4[k]=p;
if (k==M)
{
suma2=0;
copiere(); /// resetare matrice initiala
for(int i2=0; i2<M; i2++) /// inmultire linii cu -1
if(x4[i2]==1)
minus1( i2);
for(int w=0; w<N; w++) /// calculare modul suma elemente pozitive si modul de suma elemente negative, pe fiecare coloana
{
sump=0; /// initializare suma cu 0
for(j=0; j<M; j++)
sump+=a[j][w];
if(sump>0) /// calcularea sumei elementelor matricei
suma2+=sump;
else
suma2+=-sump;
}
if(suma2>summax) /// actualizare suma maxima
summax=suma2;
}
else BackRec4(k+1);
}
}
int main()
{
citire();
for(i=0;i<M;i++) /// initializare suma maxima
for(j=0;j<N;j++)
summax+=a[i][j];
BackRec4(0);
g<<summax;
return 0;
}