Pagini recente » Cod sursa (job #2881600) | Cod sursa (job #679245) | Cod sursa (job #265778) | Cod sursa (job #3281910) | Cod sursa (job #733785)
Cod sursa(job #733785)
#include <iostream>
#include <fstream>
using namespace std;
long b[32];
long m[16][16];
long sum(long m[16][16], long N, long M){
long sum = 0;
for(long i = 0; i < N; i++)
for(long j = 0; j < M; j++)
sum = sum + m[i][j];
return sum;
}
void back(long k, long N, long M, long &max){
long sumAux = 0;
if(k - 1 == M + N){
sumAux = sum(m,N,M);
if(sumAux > max)
max = sumAux;
}
else
for(long i = 1; i <= M + N; i++)
if(!b[i]){
b[i] = 1;
if(i <= N){
for(long j = 0; j <= M - 1; j++)
m[i-1][j] = -m[i-1][j];
}
else{
long col = i - N;
for(long 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()
{
long N, M;
long max = 0;
ifstream f ("flip.in");
f >> N;
f >> M;
for(long i = 0; i < N; i++)
for(long 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;
}