这题用穷举法最合适,每种骰子至多有24种状态,读入数据穷举一下就行了。
1.为了提高效率,可以分别用特征数字100(b)/10(g)/1(r)来表示每个面的颜色,这样两个等价骰子的特征数字之和必然是相等的。如果不相等则直接输出'FALSE'
2.骰子可以沿着x/y/z三个方向旋转,如果两个特征数字相等的骰子对不上,那就旋转吧。
一次ac。
//#define LOCAL
//#define TESTING
#include<stdio.h>
#include<ctype.h>
#include<string.h>
char cube1[7],cube2[7],tempcube[7];
int sum1,sum2;
int code(char color)
{
if(color == 'r') return 1;
else if(color == 'g') return 10;
else if(color == 'b') return 100;
}
int check()
{
for(int i = 1; i <= 6; i++)
{
if(tempcube[i]!=cube2[i]) return i;
}
return 0;
}
void rotatex()
{
char temps;
temps = tempcube[1];
tempcube[1] = tempcube[2];
tempcube[2] = tempcube[6];
tempcube[6] = tempcube[5];
tempcube[5] = temps;
}
void rotatey()
{