Pagini recente » Cod sursa (job #2942245) | Cod sursa (job #179872) | Cod sursa (job #2877367) | Cod sursa (job #1856934) | Cod sursa (job #770784)
Cod sursa(job #770784)
#include <iostream>
using namespace std;
ifstream fin;
ofstream fout;
int mat[16][16];
int M, N;
int result;
int find_sum();
void bkt_row( int row );
void bkt_column( int column );
void flip_column( int j );
void flip_row( int i );
int int main(int argc, char const *argv[])
{
fin.open( "flip.in" );
fin >> M >> N;
for( int i = 0; i < M; ++i )
for( int j = 0; j < N; ++j )
fin >> mat[i][j];
fin.close();
result = find_sum();
bkt_row( 0 );
fout.open( "flip.out" );
fout << result;
fout.close();
return 0;
}
void bkt_row( int row )
{
if( row < M - 1 )
backtracking( row + 1 );
flip_row( row );
int x = find_sum();
result = result > x ? result : x;
bkt_column( 0 );
flip_row( row );
}
void bkt_column( int column )
{
if( column < N - 1 )
backtracking( column + 1 );
flip_column( column );
int x = find_sum();
result = result > x ? result : x;
bkt_column( 0 );
flip_column( column );
}
void flip_column( int j )
{
for( int i = 0; i < M; ++i )
{
mat[i][j] *= -1;
}
}
void flip_row( int i )
{
for( int j = 0; j < N; ++j )
{
mat[i][j] *= -1;
}
}
int find_sum()
{
int sum = 0;
for( int i = 0; i < M; ++i )
for( int j = 0; j < N; ++j )
sum += mat[i][j];
return sum;
}