Pagini recente » Cod sursa (job #2819338) | Cod sursa (job #850617) | Cod sursa (job #1266662) | Cod sursa (job #1390739) | Cod sursa (job #733779)
Cod sursa(job #733779)
#include <iostream>
#include <fstream>
using namespace std;
int b[32];
int m[16][16];
int sum(int m[16][16], int N, int M){
int sum = 0;
for(int i = 0; i < N; i++)
for(int j = 0; j < M; j++)
sum = sum + m[i][j];
return sum;
}
void back(int k, int N, int M, int &max){
int sumAux = 0;
if(k - 1 == M + N){
sumAux = sum(m,N,M);
if(sumAux > max)
max = sumAux;
}
else
for(int i = 1; i <= M + N; i++)
if(!b[i]){
b[i] = 1;
if(i <= N){
for(int j = 0; j <= M - 1; j++)
m[i-1][j] = -m[i-1][j];
}
else{
int col = i - N;
for(int j = 0; j <= N - 1; j++)
m[j][col-1] = - m[j][col-1];
}
back(k+1,N,M,max);
b[i] = 0;
}
}
int main()
{
int N, M;
int max = 0;
ifstream f ("flip.in");
f >> N;
f >> M;
for(int i = 0; i < N; i++)
for(int j = 0; j < M; j++)
f >> m[i][j];
f.close();
back(1,N,M,max);
ofstream g ("flip.out");
g << max;
g.close();
return 0;
}