Cod sursa(job #670393)

Utilizator TIBSTiberiu Iorgulescu 321CA TIBS Data 28 ianuarie 2012 23:20:25
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
#include<iostream>
using namespace std;

int a[17][17], i, j, m, n, st[257], s, mymax=0, k;

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+m)
	return 1;
else
	return 0;
}

int solutie()
{if(k==n+m)
	return 1;
else
	return 0;
}

void bkt()
{int as=1;
k=1;
init();
while(k>0)
{do{}while((as=succesor()) && !valid());
if(as)
	if(solutie())
	{s=0;
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			s+=a[i][j]*st[1+i]*st[1+n+j];
	if(s>mymax)
		mymax=s;
	}
	else
	{k++; init();}
else
	k--;
}
}

int main()
{ifstream f("flip.in");
f>>n>>m;
for(i=0;i<n;i++)
	for(j=0;j<m;j++)
		f>>a[i][j];
f.close();
bkt();
ofstream g("flip.out");
g<<mymax;
cout<<mymax;
g.close();
return 0;
}