Pagini recente » Cod sursa (job #1714107) | Cod sursa (job #1362691) | Cod sursa (job #2780944) | Cod sursa (job #987085) | Cod sursa (job #1351049)
#include <iostream>
#include <fstream>
std::ifstream in("flip.in");
std::ofstream out ("flip.out");
int V[17][17]={0},n,m,mx=0;
int sum()
{
int t=0;
for (int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
t+=V[i][j];
mx=std::max(mx,t);
}
void read()
{
in>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
in>>V[i][j];
}
int megeri(int k)
{
int a=0;
for(int i=1;i<=n;i++)
a+=V[k][i];
if(a<0)
return 1;
else
return 0;
}
void flip_row(int t)
{
for(int i=1;i<=m;i++)
V[t][i]*=-1;
}
void flip_col(int t)
{
for( int i=1;i<=n;i++)
V[i][t]*=-1;
}
void combrow(int k,int a)
{
if(a<=k)
{
if(megeri(a)==1)
{
flip_row(a);
combrow(k,a+1);
}
else
{
combrow(k,a+1);
}
}
else
{
sum();
}
}
void combcol(int k,int a,int j)
{
if(a<=k)
{
for(int i=j;i<=m;i++)
{
flip_col(i);
combcol(k,a+1,i);
}
}
else
{
sum();
combrow(n,1);
}
}
int main()
{
read();
for(int i=0;i<=m;i++)
combcol(i,1,1);
out<<mx;
}