Pagini recente » Cod sursa (job #2104392) | Cod sursa (job #722272) | Cod sursa (job #2075593) | Cod sursa (job #3292383) | Cod sursa (job #546034)
Cod sursa(job #546034)
#include<fstream>
#include<iostream>
using namespace std;
int k,smax,a[17][17],b[17],x[17],m,n,i,j;
FILE *f,*g;
void init(int k)
{
x[k]=-1;
}
int succesor(int k)
{
if(x[k]<1&&k<=m)
{
x[k]++;
return 1;
}
return 0;
}
int valid (int k)
{
return 1;
}
int solutie(int k)
{
if(k==m)
return 1;
return 0;
}
void tipar(int k)
{
int s,sl,i,j;
s=0;
for(i=1;i<=n;i++)
{
sl=b[i];
for(j=1;j<=m;j++)
if(x[j]==1)
sl=sl+2*(-1)*a[i][j];
if(sl<-sl)
s=s-sl;
else
s=s+sl;
}
if(s>smax)
smax=s;
}
void back()
{
int i,k;
k=1;
init(k);
while(k>0)
{
i=0;
while(i==0&&succesor(k))
if(valid(k))
i=1;
if(i==1)
{
if(solutie(k))
tipar(k);
else
{
k++;
init(k);
}
}
else
k--;
}
}
int main ()
{
f=fopen("flip.in","r");
g=fopen("flip.out","w");
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
{
b[i]=0;
for(j=1;j<=m;j++)
{
fscanf(f,"%d",&a[i][j]);
b[i]=b[i]+a[i][j];
}
}
back();
fprintf(g,"%d",smax);
}