Pagini recente » Cod sursa (job #2150533) | Cod sursa (job #2036151) | Cod sursa (job #673798) | Cod sursa (job #2080357) | Cod sursa (job #1543271)
#include<stdio.h>
FILE *A,*B;
int x[17],k=1, n,m,mac[45][45],S,sopt,snorm,max;
int aleg(int k)
{
if(x[k]>=1)return 0;
else x[k]++;
return 1;
}
int ver(int k)
{
return 1;
}
int init(int k)
{
x[k]=-1;
}
void sol()
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(x[i]==1)S+=-mac[i][j];
else S+=mac[i][j];
}
}
for(j=1;j<=m;j++)
{
sopt=snorm=0;
for(i=1;i<=n;i++)
{
if(x[i]==1)
{
sopt+=mac[i][j];
}
else
{
sopt+=-1*mac[i][j];
}
}
if(S+sopt+sopt>S)S=S+sopt+sopt;
}
if(S>max)max=S;
sopt=0;snorm=0;S=0;
}
void bak(int k)
{
if(k==n+1)sol();
else
{
init(k);
while(aleg(k))
{
if(ver(k))bak(k+1);
}
}
}
int main()
{
int i,j;
A=fopen("flip.in","r");
B=fopen("flip.out","w");
fscanf(A,"%d",&n);
fscanf(A,"%d",&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)fscanf(A,"%d",&mac[i][j]);
}
bak(1);
fprintf(B,"%d",max);
fclose(A);
fclose(B);
}