判断两个涂色的骰子是否相同
可以固定一个面向上,然后旋转筛子,每个面又有四种情况,比较就好
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char s1[10],s2[10];
//固定一个面冲上,面的变化
int d[6][6] = {{1,2,3,4,5,6},{2,6,3,4,1,5},{3,2,6,1,5,4},
{4,2,1,6,5,3},{5,1,3,4,6,2},{6,5,3,4,2,1}};
bool f()
{
char s[10];
for(int i = 0 ; i < 6 ; i++){
for(int j = 1 ; j <= 6 ; j++)
s[j] = s1[d[i][j-1]];
//每个面冲上时都有4种变化
for(int k = 0 ; k < 4; k++){
char c = s[2];
s[2] = s[3];
s[3] = s[5];
s[5] = s[4];
s[4] = c;
s[7] = '\0';
if(strcmp(s+1,s2+1) == 0) return true;
}
}
return false;
}
int main()
{
char str[15];
while((scanf("%s",str)) != EOF){
for(int i = 1 ; i <= 6;i++) s1[i] = str[i-1];
for(int i = 1 ; i <= 6; i++) s2[i] = str[i+5];
if(f()) cout << "TRUE" << endl;
else cout << "FALSE" << endl;
}
}