Pagini recente » Cod sursa (job #872768) | Cod sursa (job #504331) | Cod sursa (job #2078453) | Cod sursa (job #1121818) | Cod sursa (job #757687)
Cod sursa(job #757687)
#include <fstream>
// MS MS BORA :*:*:*
using namespace std;
// MS MS BORA :*:*:*
ifstream fin ( "flip.in");
ofstream fout ( "flip.out");
void back (int,int,int);
void testare ( int,int);
void afisare ( int );
//void afisare ( int );
//void afisare1 ( int );
int maxim,s[50],sl[50],sc[50],a[16][16],cm=0;
int main()
{
int n,m,i,j;
fin>>n>>m;
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
fin>>a[i][j];
sl[i]=sl[i]+a[i][j];
}
for ( i=0;i<m;i++ )
for (j=0;j<n;j++ )
{
sc[i]=sc[i]+a[j][i];
}
back(0,n,m);
//afisare ( cm );
fout<</*"maximu maxim"<<*/maxim;
fin.close();
fout.close();
return 0;
}
void back (int k, int n, int y)
{
int i=0;
for ( i=-1;i<=1;i++)
{
if (i!=0)
{
s[k]=i;
if ( k==n-1 )
{
//afisare (n);
testare(n,y);
//fout<<" diug\n";
}
else
back(k+1,n,y);
}
}
}
void testare ( int k, int p )
{
int i,j,sum1=0,maxi=0,sum=0,b[16][16];
//b=a;
for ( i=0;i<k;i++)
for ( j=0;j<p;j++ )
if (s[i]==-1)
b[i][j]=-a[i][j];
else
b[i][j]=a[i][j];
for ( i=0;i<p;i++)
{
sum=0;
sum1=0;
for ( j=0;j<k;j++)
{
sum1=sum1-b[j][i];
sum=sum+b[j][i];
}
// fout<<"\n suma pentru coloana "<<i<<" este "<<sum<<" respectiv "<<sum1<<"\n";
if ( sum1>sum )
{
// fout<<"\nschimb coloana "<<i<<"\n";
for ( j=0;j<k;j++ )
{
b[j][i]=-b[j][i];
}
maxi=maxi+sum1;
}
else
maxi=maxi+sum;
}
// maxi=maxi+s[i]*s[k+j]*a[i][j];
if ( maxi>maxim )
maxim=maxi;
//for(i=0;i<k;i++)
// fout<<s[i]<<" ";
//fout<<"\n pt combinatie maximul este: "<<maxi<<"\n";
//fout<<"-----------------------------------------------------------------\n";
}
void afisare ( int n )
{
int i;
for ( i=0;i<n;i++)
fout<<s[i]<<" ";
fout<<"\n";
}