解题思路:
只要你,够暴力,我就让你 * * *
注意事项:
参考代码:#include
#include
#include
#include
usingnamespacestd;
boollight[9];
vectorans;
inta[][9]={
{0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,1,1},
{0,0,0,0,0,0,1,1,1},
{0,0,0,0,0,1,1,1,1},
{0,0,0,0,1,1,1,1,1},
{0,0,0,1,1,1,1,1,1},
{0,0,1,1,1,1,1,1,1},
{0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1},
};
boolcheck()
{
intcount=0;
for(intj=0;j
if(light[j])
count+=1;
if(count==4)
returntrue;
else
returnfalse;
}
voidsolve()
{
for(inti=0;i
{
do
{
for(intj=0;j
{
if(a[i][j]==1)
{
if(j==0)
{
light[1]=!light[1];
light[3]=!light[3];
}
if(j==1)
{
light[0]=!light[0];
light[2]=!light[2];
light[4]=!light[4];
}
if(j==2)
{
light[1]=!light[1];
light[5]=!light[5];
}
if(j==3)
{
light[0]=!light[0];
light[4]=!light[4];
light[6]=!light[6];
}
if(j==4)
{
light[1]=!light[1];
light[3]=!light[3];
light[5]=!light[5];
light[7]=!light[7];
}
if(j==5)
{
light[2]=!light[2];
light[4]=!light[4];
light[8]=!light[8];
}
if(j==6)
{
light[3]=!light[3];
light[7]=!light[7];
}
if(j==7)
{
light[4]=!light[4];
light[6]=!light[6];
light[8]=!light[8];
}
if(j==8)
{
light[5]=!light[5];
light[7]=!light[7];
}
}
}
if(check())
{
//for(intj=0;j
//cout<
//cout<
strings;
for(intj=0;j
s+='0'+a[i][j];
ans.push_back(s);
}
for(intk=0;k
light[k]=false;
}while(next_permutation(a[i],a[i]+9));
}
sort(ans.begin(),ans.end());
for(vector::iteratorit=ans.begin();it
cout<
}
intmain()
{
solve();
return0;
}