题意:
给一个特殊魔方的颜色图案,问你能不能在三步内还原魔方
如果不懂魔方的转动可以看这个视频
http://www.bilibili.com/video/av8452301/?from=search&seid=11750270100959783079
思路:
emmmm。。。。。
比赛的时候有随机数交过的。。。
模拟魔方转动过程。。。
这可能不太好想
所以拿起身边的草稿纸开始动手做一个魔方吧。。。
做的不好看。。。。
不过最后还是把表打出来了
#include
using namespace std;
int a[73];
bool flag;
const int ans[12][9][3]=
{
{14,55,36
,41,37,45
,43,38,40
,42,39,44
,5,54,64
,6,53,66
,7,49,65
,8,48,69
,9,46,68
},
{10,45,59
,28,36,32
,33,30,35
,29,31,34
,1,68,27
,3,69,26
,2,70,22
,6,71,21
,5,72,19
},
{2,52,67
,3,51,71
,4,47,70
,11,58,34
,15,57,35
,16,56,31
},
{28,63,41
,10,18,14
,11,13,16
,15,12,17
,1,23,54
,3,24,53
,4,20,52
,8,21,51
,9,19,50
},
{4,65,25
,8,66,24
,7,67,20
,43,56,13
,44,60,12
,40,61,11
},
{19,54,68
,1,9,5
,2,4,7
,6,3,8
,10,41,36
,12,42,35
,11,43,31
,15,44,30
,14,45,28
},
{32,37,18
,59,55,63
,62,60,57
,61,56,58
,64,50,27
,66,51,26
,67,47,25
,71,48,24
,72,46,23
},
{27,46,5
,72,64,68
,66,69,71
,65,70,67
,59,37,36
,60,39,35
,56,40,34
,57,44,33
,55,45,32
},
{64,23,9
,46,50,54
,47,52,49
,48,51,53
,55,18,41
,57,17,42
,58,16,38
,62,15,39
,63,14,37
},
{50,72,1
,23,27,19
,24,26,21
,20,25,22
,63,32,10
,62,33,12
,61,29,13
,60,30,17
,59,28,18
},
{61,38,31
,62,42,30
,58,43,29
,47,7,22
,48,6,26
,49,2,25
},
{13,38,34
,17,39,33
,16,40,29
,52,65,22
,53,69,21
,49,70,20
}
};
void p(int x,int y,int z)
{
int xx=a[x],yy=a[y],zz=a[z];
a[x]=zz;
a[y]=xx;
a[z]=yy;
}
void jj(int i)
{
for(int j=0;j<9;j++)
{
if(ans[i][j][0]==0) break;
p(ans[i][j][0],ans[i][j][1],ans[i][j][2]);
}
}
bool judge()
{
for(int i=0;i<8;i++)
{
for(int j=2;j<=9;j++)
if(a[i*9+1]!=a[i*9+j]) return false;
}
return true;
}
void dfs(int n)
{
flag=judge();
if(flag) return;
if(n==0) return;
for(int i=0;i<12;i++)
{
jj(i);
dfs(n-1);
if(flag) return;
jj(i);
dfs(n-1);
if(flag) return;
jj(i);
}
}
int main()
{
/*for(int i=0;i<12;i++)
{
for(int j=0;j<9;j++)
{
for(int k=0;k<3;k++)
printf("%d%c",ans[i][j][k]," \n"[k==2]);
}
printf("\n\n");
}
*/
int t;
cin>>t;
while(t--)
{
for(int i=1;i<=72;i++)
cin>>a[i];
flag=false;
dfs(3);
if(flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}
方法太蠢,请见谅。。。。。。