Pagini recente » Cod sursa (job #1133703) | Cod sursa (job #2846942) | Cod sursa (job #2069396) | Cod sursa (job #107945) | Cod sursa (job #75547)
Cod sursa(job #75547)
#include <stdio.h>
//#include <conio.h>
int n,m,i,j,a[20][20],max,as,st[40],k,b[20][20];
int Am_Succesor()
{
if (st[k]<1) {st[k]++;
return 1;
}
else return 0;
}
int E_Valid()
{
return 1;
}
int solutie()
{
if (k==n+m) return 1;
else return 0;
}
void tipar()
{
int s;
s=0;
for (i=1;i<=n;i++)
if (st[i]==1) for (j=1;j<=m;j++)
b[i][j]=-a[i][j];
else for (j=1;j<=m;j++)
b[i][j]=a[i][j];
for (i=n+1;i<=n+m;i++)
if (st[i]==1) for (j=1;j<=n;j++)
b[j][i-n]=-a[j][i-n];
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
s+=b[i][j];
if (s>max) max=s;
}
void back()
{
k=1;st[k]=-1;
while (k>0)
{
do {}
while ((as=Am_Succesor()) && (!E_Valid()));
if (as)
if (solutie()) tipar();
else {k++;st[k]=-1;}
else {k--;}
}
}
int main()
{FILE *fin,*fout;
//clrscr();
fin=fopen("flip.in","r");
fscanf(fin,"%d %d",&n,&m);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
fscanf(fin,"%d",&a[i][j]);
fclose(fin);
/*
for (i=1;i<=n;i++)
{for (j=1;j<=m;j++)
printf("%d ",a[i][j]);
printf("\n");
}
*/
max=0;
back();
fout=fopen("flip.out","w");
fprintf(fout,"%d",max);
fclose(fout);
return 0;
}