Pagini recente » Cod sursa (job #452442) | Cod sursa (job #2682686) | Cod sursa (job #2187881) | Cod sursa (job #349019) | Cod sursa (job #557147)
Cod sursa(job #557147)
#include <stdio.h>
int matrix[16][16];
int mat[16][16];
int v[32];
int n, m;
int maxim;
/*
void max_matrix(int k)
{
int i, j, s1=0;
for (i=0; i<n; i++)
for (j=0; j<m; j++)
mat[i][j]=matrix[i][j];
for (i=0; i<k; i++)
if(v[i]<=n)
{
for (j=0; j<m; j++)
mat[v[i]-1][j]*=-1;
}
else
{
for (j=0; j<n; j++)
mat[j][v[i]-n-1]*=-1;
}
for(i=0; i<n; i++)
for(j=0; j<m; j++)
s1+=matrix[i][j];
if(s1>maxim) maxim = s1;
}
void combinari(int n, int k, int i, int r)
{
int j;
if(i==k)
{
max_matrix(k);
return;
}
for(j=r; j<=n; j++)
{
v[i]=j;
combinari(n, k, i+1, j+1);
}
}
*/
void max(long x)
{
int i, j, s1=0;
for(i=0; i<n; i++)
for(j=0; j<m; j++)
if (((x & (1<<i)) && !(x & (1<<(n+j-1))) || (!(x & (1<<i)) && (x & (1<<(n+j-1))))
s1+=matrix[i][j]*(-1);
else
s1+=matrix[i][j];
if(s1>maxim) maxim = s1;
}
void comb(int n, int k)
{
long i, j, c;
for (i=0; i<(1<<n); i++)
{
for (j=0,c=0; j<32; j++) if (i & (1<<j)) c++;
if (c == k)
{
max(i);
//for (j=0; j<32; j++) if (i & (1<<j)) printf ("%i ", j+1);
//printf ("\n");
}
}
}
int main ()
{
int i, j;
FILE *fi, *fo;
fi=fopen("flip.in","r");
fo=fopen("flip.out","w");
fscanf(fi,"%d %d", &n, &m);
for(i=0; i<n; i++)
for(j=0; j<m; j++)
fscanf(fi,"%d", &matrix[i][j]);
//for(i=1; i<n+m; i++)
//combinari(n+m, i, 0, 1);
for(i=1; i<n+m; i++)
comb(n+m, i);
//printf("%d", maxim);
fprintf(fo,"%d", maxim);
//fclose(fi);
fclose(fo);
return 0;
}