题意描述
输入两个骰子,判断骰子是否等价。骰子可以沿着垂直轴90度旋转
思路
只用固定一组边,然后再遍历其他两组,看是否相同即可。ch[i]和ch[5-i]是同一组边,这一点是难点,我没有想出来。想出来以后就很容易实现了
AC代码
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
int main(){
#ifdef LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif
char buf[6],ch[6];
while(scanf("%c",&buf[0])!=EOF){
char buf_copy[4],ch_copy[4];
int flag=0,pos;
for(int i=1;i<6;i++){
buf[i]=getchar();
}
for(int i=0;i<6;i++){
ch[i]=getchar();
}
getchar();
for(int i=0;i<3;i++){
for(int j=0;j<6;j++){
flag=0;
if(buf[i]==ch[j]&&buf[5-i]==ch[5-j]){
flag=1;
ch[j]=ch[5-j]='0';
break;
}
}
if(!flag) break;
}
if(flag) printf("TRUE\n");
else printf("FALSE\n");
}
return 0;
}
总结
这道题刚开始对题意理解的有偏差,想到的是只能从一个方向旋转,没有考虑到多个方向旋转的情况,以后一定要注意