Pagini recente » Cod sursa (job #2546926) | Cod sursa (job #440408) | Cod sursa (job #1117590) | Cod sursa (job #2759227) | Cod sursa (job #2033954)
#include <stdio.h>
using namespace std;
int maxx;
short int p,n,m;
short int v[17];
int mat[17][17];
int solutie(int k){
return k==p;
}
void calculeaza(int k,int tabla[17][17]){
int s=0,slin;
short int i,j;
for (i=1;i<=k;i++){
for(j=1;j<=n;j++){
tabla[j][v[i]] *= -1;
}
}
for(i=1;i<=n;i++){
slin = 0;
for(j=1;j<=m;j++){
slin += tabla[i][j];
}
if(slin<0)
s -= slin;
else s += slin;
}
if(s>maxx)
maxx=s;
for (i=1;i<=k;i++){
for(j=1;j<=n;j++){
tabla[j][v[i]] *= -1;
}
}
}
void bkt(int k){
int i;
for (i=v[k-1]+1;i<=m;i++){
v[k]=i;
if (solutie(k))
calculeaza(k,mat);
else{
bkt(k+1);
}
}
}
int main(){
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
short int i,j;
scanf("%hu%hu",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
scanf("%d",&mat[i][j]);
maxx += mat[i][j];
}
for(p=1;p<=m;p++){
bkt(1);
}
printf("%d",maxx);
return 0;
}