Pagini recente » Cod sursa (job #1550612) | Cod sursa (job #1518967) | Cod sursa (job #1655746) | Cod sursa (job #1147238) | Cod sursa (job #1524728)
#include <iostream>
#include <stdio.h>
using namespace std;
int mat[20][20];
char v[20][2];
void backtracking(int i, int n, int m, int s, int &smax){
if(i==n*m+1){
if(s>smax)
smax=s;
return;
}
int col=0, lin=i;
if(i>n){
lin=i-n;
col=1;
}
v[lin][col]='+';
if(col==0)
s+=mat[lin][0];
backtracking(i+1, n, m, s, smax);
v[lin][col]='-';
if(col==0)
s-=2*mat[lin][0];
else s-=2*mat[0][lin];
backtracking(i+1, n, m, s, smax);
}
int main()
{
FILE *fin=fopen("flip.in", "r");
FILE *fout=fopen("flip.out", "w");
int n, m, smax=0;
fscanf(fin, "%d%d", &n, &m);
for(int i=1; i<=n; ++i){
for(int j=1; j<=m; ++j){
fscanf(fin, "%d", &mat[i][j]);
mat[i][0]+=mat[i][j];
mat[0][j]+=mat[i][j];
}
}
backtracking(1, n, m, 0, smax);
fprintf(fout, "%d", smax);
return 0;
}