Pagini recente » Istoria paginii runda/chestie/clasament | tema | Cod sursa (job #467815) | Cod sursa (job #2133737) | Cod sursa (job #2579383)
#include <iostream>
#include <fstream>
using namespace std;
int n ,m, table[16][16], maxsum=0;
int flip[16];
void backtr(int k)
{
if(k==m)
{
int i, j;
int sf=0, s;
for(i=0;i<n;i++)
{
s=0;
for(j=0;j<m;j++)
{
s += table[i][j] * flip[j];
}
if(s<0)
{
s = -s;
}
sf += s;
}
maxsum = max(maxsum, sf);
}
else
{
flip[k] = 1;
backtr(k+1);
flip[k] = -1;
backtr(k+1);
}
}
int main()
{
ifstream in("flip.in");
ofstream out("flip.out");
in>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
in>>table[i][j];
}
}
backtr(0);
out<<maxsum;
}
/*#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream in("flip.in");
ofstream out("flip.out");
int n, m;
in>>n>>m;
int mat[n][m];
int sum;
for(int i=0;i<n;i++)
{
sum=0;
for(int j=0;j<m;j++)
{
in>>mat[i][j];
sum += mat[i][j];
}
if(sum<0)
{
for(int j=0;j<n;j++)
{
mat[i][j] *= -1;
}
}
}
for(int j=0;j<n;j++)
{
sum = 0;
for(int i=0;i<n;i++)
{
sum += mat[i][j];
}
if (sum<0)
{
for(int i=0;i<n;i++)
{
mat[i][j] *=-1;
}
}
}
sum = 0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
sum+=mat[i][j];
}
}
cout<<sum;
}*/