思路:
模拟;
代码:
#include#include #include #include using namespace std;struct MFType { int ai[4][4];};struct MFType ci[7];int len;char done[500],ch[10];/*1.front2.back3.left4.right5.top6.under*/void OperationType_right_turning90(){ MFType *now=&ci[4],tmp=ci[4]; now->ai[1][1]=tmp.ai[3][1]; now->ai[1][2]=tmp.ai[2][1]; now->ai[1][3]=tmp.ai[1][1]; now->ai[2][1]=tmp.ai[3][2]; now->ai[2][3]=tmp.ai[1][2]; now->ai[3][1]=tmp.ai[3][3]; now->ai[3][2]=tmp.ai[2][3]; now->ai[3][3]=tmp.ai[1][3]; now=&ci[1],tmp=ci[1]; MFType *pos=&ci[6]; now->ai[1][3]=pos->ai[1][3]; now->ai[2][3]=pos->ai[2][3]; now->ai[3][3]=pos->ai[3][3]; now=&ci[6],pos=&ci[2]; now->ai[1][3]=pos->ai[1][3]; now->ai[2][3]=pos->ai[2][3]; now->ai[3][3]=pos->ai[3][3]; now=&ci[2],pos=&ci[5]; now->ai[1][3]=pos->ai[1][3]; now->ai[2][3]=pos->ai[2][3]; now->ai[3][3]=pos->ai[3][3]; now=&ci[5],pos=&tmp; now->ai[1][3]=pos->ai[1][3]; now->ai[2][3]=pos->ai[2][3]; now->ai[3][3]=pos->ai[3][3];}void OperationType_right_turningback90(){ MFType *now=&ci[4],tmp=ci[4]; now->ai[1][1]=tmp.ai[1][3]; now->ai[1][2]=tmp.ai[2][3]; now->ai[1][3]=tmp.ai[3][3]; now->ai[2][1]=tmp.ai[1][2]; now->ai[2][3]=tmp.ai[3][2]; now->ai[3][1]=tmp.ai[1][1]; now->ai[3][2]=tmp.ai[2][1]; now->ai[3][3]=tmp.ai[3][1]; now=&ci[1],tmp=ci[1]; MFType *pos=&ci[5]; now->ai[1][3]=pos->ai[1][3]; now->ai[2][3]=pos->ai[2][3]; now->ai[3][3]=pos->ai[3][3]; now=&ci[5],pos=&ci[2]; now->ai[1][3]=pos->ai[1][3]; now->ai[2][3]=pos->ai[2][3]; now->ai[3][3]=pos->ai[3][3]; now=&ci[2],pos=&ci[6]; now->ai[1][3]=pos->ai[1][3]; now->ai[2][3]=pos->ai[2][3]; now->ai[3][3]=pos->ai[3][3]; now=&ci[6],pos=&tmp; now->ai[1][3]=pos->ai[1][3]; now->ai[2][3]=pos->ai[2][3]; now->ai[3][3]=pos->ai[3][3];}void OperationType_top_turning90(){ MFType *now=&ci[5],tmp=ci[5]; now->ai[1][1]=tmp.ai[3][1]; now->ai[1][2]=tmp.ai[2][1]; now->ai[1][3]=tmp.ai[1][1]; now->ai[2][1]=tmp.ai[3][2]; now->ai[2][3]=tmp.ai[1][2]; now->ai[3][1]=tmp.ai[3][3]; now->ai[3][2]=tmp.ai[2][3]; now->ai[3][3]=tmp.ai[1][3]; now=&ci[1],tmp=ci[1]; MFType *pos=&ci[3]; now->ai[1][1]=pos->ai[1][1]; now->ai[1][2]=pos->ai[1][2]; now->ai[1][3]=pos->ai[1][3]; now=&ci[3],pos=&ci[2]; now->ai[1][1]=pos->ai[1][1]; now->ai[1][2]=pos->ai[1][2]; now->ai[1][3]=pos->ai[1][3]; now=&ci[2],pos=&ci[4]; now->ai[1][1]=pos->ai[1][1]; now->ai[1][2]=pos->ai[1][2]; now->ai[1][3]=pos->ai[1][3]; now=&ci[4],pos=&tmp; now->ai[1][1]=pos->ai[1][1]; now->ai[1][2]=pos->ai[1][2]; now->ai[1][3]=pos->ai[1][3];}void OperationType_top_turningback90(){ MFType *now=&ci[5],tmp=ci[5]; now->ai[1][1]=tmp.ai[1][3]; now->ai[1][2]=tmp.ai[2][3]; now->ai[1][3]=tmp.ai[3][3]; now->ai[2][1]=tmp.ai[1][2]; now->ai[2][3]=tmp.ai[3][2]; now->ai[3][1]=tmp.ai[1][1]; now->ai[3][2]=tmp.ai[2][1]; now->ai[3][3]=tmp.ai[3][1]; now=&ci[1],tmp=ci[1]; MFType *pos=&ci[4]; now->ai[1][1]=pos->ai[1][1]; now->ai[1][2]=pos->ai[1][2]; now->ai[1][3]=pos->ai[1][3]; now=&ci[4],pos=&ci[2]; now->ai[1][1]=pos->ai[1][1]; now->ai[1][2]=pos->ai[1][2]; now->ai[1][3]=pos->ai[1][3]; now=&ci[2],pos=&ci[3]; now->ai[1][1]=pos->ai[1][1]; now->ai[1][2]=pos->ai[1][2]; now->ai[1][3]=pos->ai[1][3]; now=&ci[3],pos=&tmp; now->ai[1][1]=pos->ai[1][1]; now->ai[1][2]=pos->ai[1][2]; now->ai[1][3]=pos->ai[1][3];}void debug(){ printf("\n"); for(int i=1;i<=6;i++) { printf("%d\n",i); for(int j=1;j<=3;j++) { for(int v=1;v<=3;v++) printf("%d",ci[i].ai[j][v]); printf("\n"); } printf("\n"); } printf("\n");}int main(){ freopen("cube.in","r",stdin); freopen("cube.out","w",stdout); scanf("%s",done),len=strlen(done); for(int i=1;i<=6;i++) { for(int j=1;j<=3;j++) { scanf("%s",ch); for(int v=1;v<=3;v++) ci[i].ai[j][v]=ch[v-1]-'0'; } }// debug(); for(int i=0;i