1、根据骰子自身六面的特质,可以模拟出所有面顺序的情况,因为情况总数小..暴力是没有关系。第一种方法是枚举(暴力)
2、骰子的另一种情况是,即使再怎么旋转,对立面涂色的情况是不会变的,因而可以从这种方式检查(见水题分类,这里代码不做详解)
枚举
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int flag;
char s[15],s1[7],s2[7],s3[7];
int d[7][7]={ {0,1,2,3,4,5},{1,5,2,3,0,4},{2,1,5,0,4,3},
{3,1,0,5,4,2},{4,0,2,3,5,1},{5,4,2,3,1,0} };
int main()
{
while(cin>>s) {
flag=0;
for(int i=0;i<12;i++) {
if(i<6) {
s1[i]=s[i];
}else{
s2[i-6]=s[i];
}
}
s1[6]='\0';
s2[6]='\0';
for (int i=0;i<6;i++) {
for (int j=0;j<6;j++) {
s3[j]=s1[d[i][j]];
}
s3[6]='\0';
if(strcmp(s3,s2)==0) {
flag=1;
break;
}
for(int j=0;j<3;j++) {
char ch=s3[1];
s3[1]=s3[2];
s3[2]=s3[4];
s3[4]=s3[3];
s3[3]=ch;
if (strcmp(s3, s2)==0) {
flag=1;
break;
}
}
if(flag) break;
}
if(flag) {
cout<<"TRUE"<<endl;
}else{
cout<<"FALSE"<<endl;
}
}
return 0;
}
(待修改)