Pagini recente » Cod sursa (job #2522103) | Cod sursa (job #2344701) | Cod sursa (job #2333276) | Cod sursa (job #2654415) | Cod sursa (job #1320510)
#include <stdio.h>
#include <stdlib.h>
#define MAX 64
int board[16][16];
void init(int v[], int k)
{
v[k] = -3;
}
int succesor(int v[], int k)
{
int as = 0;
if(v[k] < 1)
{
v[k] += 2;
as = 1;
}
return as;
}
void flip(int n, int m)
{
int v[MAX] = {0};
FILE *g;
int k = 0, as;
int max = -(1 << 30);
int suma, sumaLinie, i, j;
init(v, k);
while(k >= 0)
{
as = succesor(v, k);
if(as)
{
if(k == m - 1)
{
//am solutie
// calculez suma
suma = 0;
for(i = 0; i < n; i++)
{
sumaLinie = 0;
for(j = 0; j < m; j++)
sumaLinie += board[i][j] * v[j];
if(sumaLinie > 0)
suma += sumaLinie;
else
suma -= sumaLinie;
}
if(suma > max)
max = suma;
}
else
{
k++;
init(v, k);
}
}
else
k--;
}
g = fopen("flip.out", "w");
fprintf(g, "%d", max);
fclose(g);
}
int main()
{
FILE* f;
int n, m;
int i, j;
f = fopen("flip.in", "r");
fscanf(f, "%d %d", &n, &m);
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
fscanf(f, "%d", &board[i][j]);
fclose(f);
flip(n, m);
return 0;
}