Pagini recente » Cod sursa (job #1817757) | Cod sursa (job #1283342) | Cod sursa (job #1009296) | Cod sursa (job #2077618) | Cod sursa (job #672282)
Cod sursa(job #672282)
#include<fstream>
using namespace std;
int a[20][20], n, m, st[20], i, j, k, s, s2, smax=0;
void init()
{st[k]=0;}
int succesor()
{if(st[k]==0)
{st[k]=-1; return 1;}
else if(st[k]==-1)
{st[k]=1; return 1;}
else
return 0;
}
int valid()
{if(k<=n)
return 1;
else
return 0;
}
int solutie()
{if(k==n)
return 1;
else
return 0;
}
void bkt()
{int as=0;
k=1;
init();
while(k>0)
{do{}while((as=succesor()) && !valid());
if(as)
if(solutie())
{s=0;
for(j=1;j<=m;j++)
{s2=0;
for(i=1;i<=n;i++)
s2+=a[i][j]*st[i];
if(s2<0)
s-=s2;
else
s+=s2;
}
if(s>smax)
smax=s;
}
else
{k++; init();}
else
k--;
}
}
int main()
{ifstream f("flip.in");
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
f>>a[i][j];
f.close();
bkt();
ofstream g("flip.out");
g<<smax;
g.close();
return 0;
}