Pagini recente » Cod sursa (job #1730128) | Cod sursa (job #899715) | Cod sursa (job #610278) | Cod sursa (job #779343) | Cod sursa (job #2460175)
#include <fstream>
using namespace std;
ifstream cin("flip.in");
ofstream cout("flip.out");
int usei[18];
int M[18][18];
int usej[18];
int n,m,i,j,maxim;
void bktcol(int k)
{
if(k>m)
{
int i,j;
int suma=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(usei[i]==1)
M[i][j]*=-1;
if(usej[j]==1)
M[i][j]*=-1;
suma+=M[i][j];
if(usei[i]==1)
M[i][j]*=-1;
if(usej[j]==1)
M[i][j]*=-1;
}
if(suma>maxim)
maxim=suma;
}
else
{
usej[k]=0;
bktcol(k+1);
usej[k]=1;
bktcol(k+1);
}
}
void bkt(int k)
{
if(k>n)
{
bktcol(1);
}
else
{
usei[k]=0;
bkt(k+1);
usei[k]=1;
bkt(k+1);
}
}
int main()
{
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>M[i][j];
bkt(1);
cout<< maxim << '\n';
return 0;
}