Cod sursa(job #1458528)

Utilizator perjulucianPerju Lucian Ionut perjulucian Data 7 iulie 2015 18:38:33
Problema Jocul Flip Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 1.65 kb
#include <stdio.h>
#include <stdlib.h>
int N , M ; // n linii , m coloane
void print(int matrix[N][M]){
    printf("\n###\n");
    int i , j;
    for(i=0;i < N;i++){
        printf("\n");
        for(j=0 ; j<M ; j++){
            printf("%d ",matrix[i][j] );
        }
     }
}
int get_sum(int matrix[N][M]){
    int i , j , sum = 0 ;
    for(i=0;i < N ; i++)
        for(j = 0 ; j < M ; j++)
            sum += matrix[i][j];
    return sum ;    
}
void rows(int matrix[N][M],int index,int * suma){
    if (index == N ){
        int cur_sum = get_sum(matrix);
        if(cur_sum > *suma){
            *suma = cur_sum ;
    
         }   
        
        return ;
    }    

    int i ;
    
    rows(matrix,index+1,suma);
    for (i = 0 ; i < M ; i++)
        matrix[index][i] *= -1 ;
    rows(matrix,index+1,suma);
   
   


}
void columns(int matrix[N][M],int index,int * suma){
    if (index == M ){
        rows(matrix,0,suma);
        return ;
    }    

    int i ;
    
    columns(matrix,index+1,suma);
    for (i = 0 ; i < N ; i++)
        matrix[i][index] *= -1 ;
    columns(matrix,index+1,suma);
   
   


}

int main(){
    FILE * in = fopen("flip.in","r");
    FILE * out = fopen("flip.out","w");
    
    fscanf(in,"%d %d\n",&N,&M);
    int matrix[N][M];
    int i ,j;
    for(i = 0; i < N; i++){
        for(j=0 ; j<M ; j++){
            fscanf(in,"%d ",&matrix[i][j]);
        }

    }
    // PRINTARE
    /*for(i=0;i<N;i++){
        printf("\n");
        for(j=0 ; j<M ; j++){
            printf("%d ",matrix[i][j] );
        }

    }*/
    int max = 0 ;
    columns(matrix,0,&max);
    
    fprintf(out,"%d\n",max );
    fclose(in);
    fclose(out);
    return 0 ; 
}