Pagini recente » Cod sursa (job #2927995) | Cod sursa (job #3157431) | Cod sursa (job #1030043) | Cod sursa (job #2491382) | Cod sursa (job #2621224)
#include <stdio.h>
#include <stdlib.h>
int mat[16][16], n, m, semnlin[16], smax;
int calc(){
int stotal, s, l, c;
stotal=0;
for(c=0; c<m; c++){
s=0;
for(l=0; l<n; l++) /// calculez suma pe fiecare coloana, dupa semnlin
s+=mat[l][c]*semnlin[l];
if(s<0) /// daca s<0, putem schimba si semnul coloanei
s=-s;
stotal+=s;
}
return stotal;
}
void bkt(int lin){
int s, x;
if(lin==n){
s=calc();
if(s>smax){
smax=s;
for(x=0; x<n; x++)
printf("%d ", semnlin[x]);
printf("\n");
}
}else{
semnlin[lin]=1;
bkt(lin+1);
semnlin[lin]=-1;
bkt(lin+1);
}
}
int main(){
FILE *fin, *fout;
int l, c;
fin=fopen("flip.in", "r");
fout=fopen("flip.out", "w");
fscanf(fin, "%d%d", &n, &m);
for(l=0; l<n; l++)
for(c=0; c<m; c++)
fscanf(fin, "%d", &mat[l][c]);
smax=-256000000;
bkt(0);
fprintf(fout, "%d", smax);
fclose(fin);
fclose(fout);
return 0;
}