Pagini recente » Cod sursa (job #3269615) | Cod sursa (job #1447907) | Cod sursa (job #274109) | Cod sursa (job #465062) | Cod sursa (job #542555)
Cod sursa(job #542555)
#include <stdio.h>
int A[10][10],B[10][10],C[10][10][7];
int sol[200];
int i,j,k,N,max;
inline int verif()
{
int a,b,c;
int i,j,k;
int v[10][10];
a=0;
b=0;
c=0;
k=0;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
v[i][j]=sol[++k];
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
if(v[i][j]==0) a+=A[i][j];
else if(v[i][j]==1) b+=B[i][j];
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
{
if(v[i][j]!=v[i-1][j]) c+=C[i][j][1];
if(v[i][j]!=v[i][j+1]) c+=C[i][j][2];
if(v[i][j]!=v[i+1][j]) c+=C[i][j][3];
if(v[i][j]!=v[i][j-1]) c+=C[i][j][4];
}
c/=2;
return a+b-c;
}
inline void back(int k)
{
int i,aux;
if(k>N*N)
{
aux=verif();
if(aux>max) max=aux;
}
else
for(i=0;i<=1;i++)
{
sol[k]=i;
back(k+1);
}
}
int main()
{
freopen("pixels.in","r",stdin);
freopen("pixels.out","w",stdout);
scanf("%d",&N);
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
scanf("%d",&A[i][j]);
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
scanf("%d",&B[i][j]);
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
for(k=1;k<=4;k++)
scanf("%d",&C[i][j][k]);
max=0;
back(1);
printf("%d\n",max);
return 0;
}