Pagini recente » Cod sursa (job #205724) | Cod sursa (job #2847540) | Cod sursa (job #1981846) | Cod sursa (job #2511541) | Cod sursa (job #584795)
Cod sursa(job #584795)
#include <iostream>
#include <fstream>
using namespace std;
int N, M, Stiva[33];
long Flip[17][17], S;
void Citire ()
{
ifstream fin ("flip.in");
int i, j;
fin >> N >> M;
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
fin >> Flip[i][j];
}
}
fin.close ();
}
void Afisare ()
{
ofstream fout ("flip.out");
fout << S << "\n";
fout.close ();
}
void Back (int k)
{
int i, j;
long SCurent=0, Element;
if (k<N+M)
{
for (i=0; i<=1; i++)
{
Stiva[k]=i;
Back (k+1);
}
}
else
{
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
Element=Flip[i][j];
if (Stiva[i]==1)
{
Element*=(-1);
}
if (Stiva[N+j]==1)
{
Element*=(-1);
}
SCurent+=Element;
}
}
if (SCurent>S)
{
S=SCurent;
}
}
}
void Baza2 (int n)
{
int i=0;
while (n>0)
{
Stiva[i++]=n%2;
n/=2;
}
while (i<=32)
{
Stiva[i++]=0;
}
}
int main ()
{
int n, i, j;
long SCurent, Element;
Citire ();
Back (0);
/*for (n=0; n<(2<<(M+N)); n++)
{
Baza2 (n);
SCurent=0;
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
Element=Flip[i][j];
if (Stiva[i]==1)
{
Element*=(-1);
}
if (Stiva[N+j]==1)
{
Element*=(-1);
}
SCurent+=Element;
}
}
if (SCurent>S)
{
S=SCurent;
}
}*/
Afisare ();
return 0;
}