Cod sursa(job #2621236)

Utilizator LuciBBadea Lucian LuciB Data 30 mai 2020 13:31:07
Problema Jocul Flip Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#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;
}