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;
}
(待修改)