这道题相对于其他人来说用的篇幅比较长吧,方法也比较简单暴力,就是将绕x,y,z轴方向旋转的三个函数都写出来,然后还有一个判断的函数,然后就进行4*4+4*4=32次的旋转然后进行判断,里面应该还是有重复的情况,不过并没有去深究。
#include <iostream>
#include <string>
using namespace std;
string colors[3];
int flag = 0;
bool judge();
void xuanzhuan1();
void xuanzhuan2();
void xuanzhuan3();
int main() {
string str;
while (cin >> str) {
colors[1] += ' ';
colors[2] += ' ';
for (int i = 0; i < 6; i++)
colors[1] += str[i];
for (int i = 6; i < 12; i++)
colors[2] += str[i];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (judge())
flag = 1;
xuanzhuan2();
}
for (int j = 0; j < 4; j++) {
if (judge())
flag = 1;
xuanzhuan3();
}
xuanzhuan1();
}
if (flag)
cout << "TRUE" << endl;
else
cout << "FALSE" << endl;
colors[1].clear();
colors[2].clear();
flag = 0;
}
return 0;
}
bool judge() {
if (colors[1] == colors[2])
return true;
return false;
}
void xuanzhuan1() {
colors[0] = colors[1];
colors[1][2] = colors[0][3];
colors[1][4] = colors[0][2];
colors[1][5] = colors[0][4];
colors[1][3] = colors[0][5];
}
void xuanzhuan2() {
colors[0] = colors[1];
colors[1][2] = colors[0][6];
colors[1][1] = colors[0][2];
colors[1][5] = colors[0][1];
colors[1][6] = colors[0][5];
}
void xuanzhuan3() {
colors[0] = colors[1];
colors[1][1] = colors[0][4];
colors[1][3] = colors[0][1];
colors[1][6] = colors[0][3];
colors[1][4] = colors[0][6];
}