Pagini recente » Cod sursa (job #2287487) | Cod sursa (job #221538) | Cod sursa (job #1593489) | Cod sursa (job #121575) | Cod sursa (job #2079319)
#include <fstream>
using namespace std;
int N,M,i,j,Maxi,Sol[20],A[20][20];
void schimbcoloana(int X)
{
int i;
for(i=1;i<=N;i++)
A[i][X]=-A[i][X];
}
void summax()
{
int i,Sum,Sumlin;
Sum=0;
for(i=1;i<=N;i++)
{
Sumlin=0;
for(j=1;j<=M;j++)
Sumlin+=A[i][j];
if(Sumlin>0)
Sum+=Sumlin;
else
Sum-=Sumlin;
}//for
if(Sum>Maxi)
Maxi=Sum;
}
void backtrack(int Nivel)
{
int i;
for(i=Sol[Nivel-1]+1;i<=M;i++)
{
Sol[Nivel]=i;
schimbcoloana(i);
summax();
backtrack(Nivel+1);
schimbcoloana(i);
}//for i
}
int main()
{
ifstream fin("flip.in");
ofstream fout("flip.out");
fin>>N>>M;
for(i=1;i<=N;i++)
for(j=1;j<=M;j++)
fin>>A[i][j];
Maxi=-999999999;
backtrack(1);
fout<<Maxi;
fin.close ();
fout.close();
return 0;
}