Pagini recente » Cod sursa (job #2094552) | Cod sursa (job #2528339) | Cod sursa (job #2573347) | Cod sursa (job #2069207) | Cod sursa (job #114712)
Cod sursa(job #114712)
#include <stdio.h>
#include <malloc.h>
int i,j,m,n,p=0;
double max;
double **a;
int *x;
FILE *f, *g;
void prelSol()
{
int i;
double s=0;
f=fopen("D:\\flip.in","r");
fscanf(f,"%d %d",&n, &m);
for (i=0; i<n; i++)
for (j=0; j<m; j++)
fscanf(f,"%lf",&a[i][j]);
/* 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++)
if (x[i]==0)
for (j=0; j<m; j++)
a[i][j]=a[i][j]*(-1);
for (j=0; j<m; j++)
if (x[n+j]==0)
for (i=0; i<n; i++)
a[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+=a[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("D:\\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));
for (i=0; i<n; i++)
for (j=0; j<m; j++)
fscanf(f,"%lf",&a[i][j]);
g=fopen("D:\\flip.out","w");
back();
fprintf(g,"%lf",max);
return 0;
}