题目见这个人的日志:http://blog.csdn.net/liuqiyao_01/article/details/8757800
我是用C++写的代码。
题目分析:该题目类型为模拟,我定义了一个数组magic[3][2][4], 3代表x,y,z; 2代表正反两面,4代表一个面的四个格子。然后我用纸折了一个正方体,然后一个个的查出来的。
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
int magic[3][2][4];
void x_oper()
{
int tmp1, tmp2;
tmp1 = magic[0][0][3];
for(int i = 3; i >= 1; i --)
{
magic[0][0][i] = magic[0][0][i - 1];
}
magic[0][0][0] = tmp1;
tmp1 = magic[2][0][3];
tmp2 = magic[2][0][2];
magic[2][0][3] = magic[1][1][1];
magic[2][0][2] = magic[1][1][0];
magic[1][1][1] = magic[2][1][1];
magic[1][1][0] = magic[2][1][0];
magic[2][1][1] = magic[1][0][1];
magic[2][1][0] = magic[1][0][0];
magic[1][0][1] = tmp1;
magic[1][0][0] = tmp2;
}
void y_oper()
{
int tmp1, tmp2;
tmp1 = magic[1][0][3];
for(int i = 3; i >= 1; i --)
{
magic[1][0][i] = magic[1][0][i - 1];
}
magic[1][0][0] = tmp1;
tmp1 = magic[2][0][2];
tmp2 = magic[2][0][1];
magic[2][0][2] = magic[0][0][2];
magic[2][0][1] = magic[0][0][1];
magic[0][0][2] = magic[2][1][2];
magic[0][0][1] = magic[2][1][1];
magic[2][1][2] = magic[0][1][2];
magic[2][1][1] = magic[0][1][1];
magic[0][1][2] = tmp1;
magic[0][1][1] = tmp2;
}
void z_oper()
{
int tmp1, tmp2;
tmp1 = magic[2][0][3];
for(int i = 3; i >= 1; i --)
{
magic[2][0][i] = magic[2][0][i - 1];
}
magic[2][0][0] = tmp1;
tmp1 = magic[0][1][3];
tmp2 = magic[0][1][2];
magic[0][1][3] = magic[1][1][0];
magic[0][1][2] = magic[1][1][3];
magic[1][1][0] = magic[0][0][1];
magic[1][1][3] = magic[0][0][0];
magic[0][0][1] = magic[1][0][2];
magic[0][0][0] = magic[1][0][1];
magic[1][0][2] = tmp1;
magic[1][0][1] = tmp2;
}
void print_color(int a, int b, int c)
{
switch(magic[a][b][c])
{
case 0:printf("绿");break;
case 1:printf("蓝");break;
case 2:printf("红");break;
case 3:printf("橙");break;
case 4:printf("白");break;
case 5:printf("黄");break;
}
}
int main(void)
{
freopen("f:\\code\\file\\data.txt", "r", stdin);
char oper[10];
while(scanf("%s", oper) == 1)
{
for(int i = 0; i < 3; i ++)
{
for(int j = 0; j < 2; j ++)
{
for(int k = 0; k < 4; k ++)
{
magic[i][j][k] = i * 2 + j;
}
}
}
for(int i = 0; oper[i] != '\0'; i ++)
{
if(oper[i] == 'x') x_oper();
else if(oper[i] == 'y') y_oper();
else z_oper();
}
print_color(0, 0, 1);
print_color(1, 0, 1);
print_color(2, 0, 2);
printf("\n");
}
return 0;
}