Pagini recente » Cod sursa (job #1347947) | Cod sursa (job #2093107) | Cod sursa (job #2256820) | Cod sursa (job #1423084) | Cod sursa (job #1053150)
#include <stdio.h>
int sum_matrix(int matrix[16][16],int lines, int cols)
{
int sum = 0;
int i,j;
for (i=0; i < lines; i++)
for (j=0; j < cols; j++)
sum+= matrix[i][j];
return sum;
}
int change_line(int matrix[16][16], int n, int m, int no_line)
{
if(no_line >= n+m)
return 0;
int j;
if(no_line < n)
for (j=0; j< m; j++)
matrix[no_line][j] *= (-1);
else
for (j=0; j< n; j++)
matrix[j][no_line%n] *= (-1);
return 0;
}
void calc_sum(int matrix[16][16], int lines, int cols, int depth, int* max_sum)
{
int sum = sum_matrix(matrix, lines, cols);
if(*max_sum < sum)
*max_sum = sum;
if(depth >= lines+cols)
return ;
int i;
for(i = depth; i<lines+cols; i++)
{
//do modify
change_line(matrix, lines, cols, i);
calc_sum(matrix, lines, cols, i+1,max_sum);
//undo modify
change_line(matrix, lines, cols, i);
}
}
int main()
{
freopen ("flip.in","r",stdin);
freopen ("flip.out","w",stdout);
int n,m;
int matrix[16][16];
scanf("%d", &n);
scanf("%d", &m);
int i=0, j=0;
for (i =0 ; i < n; i++ )
for (j=0; j < m; j++)
scanf("%d", &matrix[i][j]);
int max_sum = sum_matrix(matrix,n,m);
calc_sum(matrix, n,m,0,&max_sum);
printf("%d",max_sum);
fclose(stdout);
fclose(stdin);
return 0;
}