Pagini recente » Cod sursa (job #1980717) | Cod sursa (job #1828626) | Cod sursa (job #3283050) | Cod sursa (job #1031498) | Cod sursa (job #1458532)
#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);
int sum = 0 ;
for (i = 0 ; i < N; i++)
sum = matrix[i][index];
if(sum < 0){
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 ;
}