#include<bits/stdc++.h>
using namespace std;
string MoFang[6][4]=
{
{"白", "白",//UP
"白", "白"},
{"黄", "黄",//DOWN
"黄", "黄"},
{"橙", "橙",//LEFT
"橙", "橙"},
{"红", "红",//RIGHT
"红", "红"},
{"绿", "绿",//FRONT
"绿", "绿"},
{"蓝", "蓝",//BACK
"蓝", "蓝"}
};
int OperateX[12][2]={{0,3},{0,2},{2,2},{2,3},{1,2},{1,3},{3,3},{3,2},
{4,1},{4,0},{4,2},{4,3}};
int OperateY[12][2]={{0,1},{0,3},{4,1},{4,3},{1,3},{1,1},{5,3},{5,1},
{3,2},{3,3},{3,1},{3,0}};
int OperateZ[12][2]={{4,0},{4,1},{3,2},{3,0},{5,1},{5,0},{2,0},{2,2},
{0,3},{0,1},{0,0},{0,2}};
void XuanZhuan(char Direct)
{
string temp1,temp2;
int index[12][2];
switch(Direct)
{
case 'x':
memcpy(index,OperateX,sizeof(OperateX));
break;
case 'y':
memcpy(index,OperateY,sizeof(OperateY));
break;
case 'z':
memcpy(index,OperateZ,sizeof(OperateZ));
break;
}
temp1=MoFang[index[0][0]][index[0][1]];
temp2=MoFang[index[1][0]][index[1][1]];
for(int i=0;i<6;i++)
{
MoFang[index[i][0]][index[i][1]]=MoFang[index[i+2][0]][index[i+2][1]];
}
MoFang[index[6][0]][index[6][1]]=temp1;
MoFang[index[7][0]][index[7][1]]=temp2;
temp1=MoFang[index[8][0]][index[8][1]];
for(int i=8;i<11;i++)
{
MoFang[index[i][0]][index[i][1]]=MoFang[index[i+1][0]][index[i+1][1]];
}
MoFang[index[11][0]][index[11][1]]=temp1;
}
int main()
{
string opera;
char c;
cin>>opera;
for(int i=0;i<opera.length();i++)
{
c=opera.at(i);
XuanZhuan(c);
}
cout<<MoFang[4][1]<<MoFang[3][2]<<MoFang[0][3];
return 0;
}
蓝桥杯魔方旋转问题c++ ac
最新推荐文章于 2022-10-07 21:58:48 发布