Pagini recente » Cod sursa (job #1726780) | Cod sursa (job #1630183) | Cod sursa (job #1759009) | Cod sursa (job #2945647) | Cod sursa (job #114794)
Cod sursa(job #114794)
#include <stdio.h>
#include <malloc.h>
int i,j,m,n,p=0;
double max;
double **a, **b;
int *x;
FILE *f, *g;
void prelSol()
{
int i;
double s=0;
// f=fopen("flip.in","r");
// fscanf(f,"%d %d",&n, &m);
/* fprintf(g,"a initial\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
fprintf(g,"%lf ",a[i][j]);
fprintf(g,"\n");
}
fprintf(g,"gata cu a\n");
fprintf(g,"b initial\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
fprintf(g,"%lf ",b[i][j]);
fprintf(g,"\n");
}
fprintf(g,"gata cu b\n");
for (i=0; i<m+n; i++)
fprintf(g,"%d ",x[i]);
fprintf(g,"\n");
*/
/* for (i=0; i<n; i++)
for (j=0; j<m; j++)
b[i][j]=a[i][j];*/
for (i=0; i<n; i++)
if (x[i]==0)
for (j=0; j<m; j++)
b[i][j]=a[i][j]*(-1);
else
for (j=0; j<m; j++)
b[i][j]=a[i][j];
for (j=0; j<m; j++)
if (x[n+j]==0)
for (i=0; i<n; i++)
b[i][j]=a[i][j]*(-1);
/*/ for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
fprintf(g,"%lf ",b[i][j]);
fprintf(g,"\n");
}*/
s=0;
for (i=0; i<n; i++)
for (j=0; j<m; j++)
s+=b[i][j];
if (s>max)
{
max=s;
}
// fprintf(g,"gata prelSol\n");
}
void back()
{
int k;
for (k=0; k<m+n; k++)
x[k]=-1;
k=0;
while (k>=0)
if (k==n+m)
{
prelSol();
k--;
}
else if (x[k]<1)
{
x[k]++;
k++;
}
else
{
x[k]=-1;
k--;
}
}
int main()
{
// FILE *f, *g;
max=0;
f=fopen("flip.in","r");
fscanf(f,"%d %d",&n, &m);
x=(int*) malloc ((m+n)*sizeof(int));
a=(double**) malloc (n*sizeof(double));
for (i=0; i<n; i++)
a[i]=(double*) calloc (m,sizeof(double));
b=(double**) malloc (n*sizeof(double));
for (i=0; i<n; i++)
b[i]=(double*) calloc (m,sizeof(double));
for (i=0; i<n; i++)
for (j=0; j<m; j++)
fscanf(f,"%lf",&a[i][j]);
g=fopen("flip.out","w");
back();
fprintf(g,"%lf",max);
return 0;
}