Pagini recente » Cod sursa (job #2169108) | Cod sursa (job #2867089) | Cod sursa (job #1144152) | Monitorul de evaluare | Cod sursa (job #2331752)
#include <stdio.h>
#include <limits.h>
#include <math.h>
int N, M, sumMax, currentSum;
int table[16][16];
unsigned int power(unsigned int a, unsigned int b)
{
unsigned int i, p;
p = 1;
for (i = 0; i < b; i ++)
{
p = p * a;
}
return p;
}
int computeSum(unsigned int rowsFlip, unsigned int colsFlip)
{
int i, j, sum = 0, minusOn;
printf("rowsflip=%x, colsFlip=%x\n", rowsFlip, colsFlip);
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
minusOn = (((rowsFlip >> i) & 0x00000001) + ((colsFlip >> j) & 0x00000001)) % 2;
if (minusOn)
{
sum -= table[i][j];
}
else
{
sum += table[i][j];
}
}
}
return sum;
}
void printMatrix(void)
{
int i, j;
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
printf("%d ", table[i][j]);
}
printf("\n");
}
printf("printing finished\n");
}
void readInput(void)
{
int i, j;
scanf("%d", &N);
scanf("%d", &M);
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
scanf("%d", &table[i][j]);
}
}
}
void iterateThroughSolutions(void)
{
unsigned int i, j;
for (i = 0; i < power(2, N - 1); i++)
{
for (j = 0; j < power(2, M); j++)
{
currentSum = computeSum(i,j);
if (currentSum > sumMax)
{
sumMax = currentSum;
}
}
}
}
int main(void)
{
sumMax = INT_MIN;
currentSum = INT_MIN;
readInput();
//printMatrix();
iterateThroughSolutions();
printf("%d", sumMax);
return 0;
}