Pagini recente » Cod sursa (job #2337151) | Cod sursa (job #1774673) | Monitorul de evaluare | Cod sursa (job #1562852) | Cod sursa (job #2079950)
#include<iostream>
#include<fstream>
using namespace std;
long maxSum = 0;
long N, M, board[16][16];
int sign[16];
void computeSum(){
long sum = 0L;
for( int i = 0; i < M; i++){
for(int j = 0; j < N; j++){
sum = sum + board[j][i] * sign[j];
}
}
if(sum > maxSum){
maxSum = sum;
}
}
void backtracking(long position){
if(position == N) computeSum();
else{
sign[position] = 1;
backtracking(position + 1);
sign[position] = -1;
backtracking(position + 1);
}
}
int main(int argc, char **argv)
{
ifstream inFile("flip.in");
ofstream outFile("flip.out");
int i, j;
inFile >> N >> M;
for(i = 0; i < N; ++i)
for(j = 0; j < M; ++j)
inFile >> board[i][j];
backtracking(0);
outFile << maxSum;
inFile.close();
outFile.close();
return 0;
}