Pagini recente » Cod sursa (job #71231) | Cod sursa (job #330179) | Cod sursa (job #1884414) | Cod sursa (job #408099) | Cod sursa (job #1283338)
#include<iostream>
#include<fstream>
using namespace std;
long T[17][17],n,m,maxim=-1000000;
int linii[17],coloane[17];
void bkt2()
{
int k=1;
coloane[k]=-1;
while(k)
if (coloane[k]<1)
{
coloane[k]++;
if (k==m)
{
long s=0;
for (unsigned i=1;i<=m;i++)
for (unsigned j=1;j<=n;j++)
{
if (coloane[i]==1) T[j][i]*=(-1);
s+=T[j][i];
}
if (maxim<s) maxim=s;
}
else
{
k++;
coloane[k]=-1;
}
}
else k--;
}
void bkt()
{
int k=1;
linii[k]=-1;
while(k)
if (linii[k]<1)
{
linii[k]++;
if (k==n)
{
for (unsigned i=1;i<=n;i++)
for (unsigned j=1;j<=m;j++)
if (linii[i]==1) T[i][j]*=(-1);
bkt2();
//cout<<maxim<<" ";
}
else
{
k++;
linii[k]=-1;
}
}
else k--;
}
int main()
{
ifstream f("flip.in");
ofstream f1("flip.out");
f>>n>>m;
for (unsigned i=1;i<=n;i++)
for (unsigned j=1;j<=m;j++)
f>>T[i][j];
bkt();
//cout<<"suma maxima: "<<maxim;
f1<<maxim;
return 0;
}