Pagini recente » Cod sursa (job #276838) | Cod sursa (job #1794165) | Cod sursa (job #2355319) | Cod sursa (job #516516) | Cod sursa (job #770793)
Cod sursa(job #770793)
#include <fstream>
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 main()
{
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 )
bkt_row( row + 1 );
if( row < M )
{
flip_row( row );
int x = find_sum();
result = result > x ? result : x;
bkt_column( 0 );
flip_row( row );
bkt_row( row + 1 );
}
}
void bkt_column( int column )
{
if( column < N - 1 )
bkt_column( column + 1 );
if( column < N )
{
flip_column( column );
int x = find_sum();
result = result > x ? result : x;
flip_column( column );
bkt_column( column + 1 );
}
}
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;
}