这题emmm本来想找规律的,结果莫得规律只得爆摸…
看刘大大写的那弄那24种排列用了我看不懂的东西…
但其实自己模拟,会特别简单,如图
其实也就3种情况…每一种中间4个走个轮回就4种了…所以有12种,然后上下颠倒你会发现,其实只要把你原来的12种从后往前读即可…所以24种,
不说了,卡在这么水的一题2天…不暴力就会败北…
代码如下
#include <bits/stdc++.h>
using namespace std;
int q[24][6]={{0,0,0,0,0,0},
{1,2,3,4,5,6},{1,3,4,5,2,6},{1,4,5,2,3,6},{1,5,2,3,4,6},
{5,2,1,4,6,3},{5,1,4,6,2,3},{5,4,6,2,1,3},{5,6,2,1,4,3},
{2,6,3,1,5,4},{2,3,1,5,6,4},{2,1,5,6,3,4},{2,5,6,3,1,4}
};
int main()
{
char s[18],s2[18];
while(~(scanf("%s",s)))
{
int okk = 0;
for (int i = 0; i < 6; i++)
s2[i] = s[i+6];
swap(s[4],s[3]);//交换,让她和我想法中的123456顺序一样
swap(s2[4],s2[3]);
for (int i = 1; i <= 12;i++)//爆摸
{
int ok = 1;
for (int j = 0; j < 6;j++)
{
if(s2[q[i][j]-1] != s[j])
{
ok = 0; break;
}
}
if(!ok)//反过来即下变上
{
ok = 1;
for (int j = 0; j < 6; j++)
{
if(s2[q[i][5-j]-1] != s[j])//注意是5-j
{
ok = 0;
break;
}
}
}
if(ok) {
okk = 1; break;
}
}
if(okk) printf("TRUE\n");
else printf("FALSE\n");
}
return 0;
}