题目见这个人的日志: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; }