魔方可以对它的6个面自由旋转。

我们来操作一个2阶魔方(如图1所示):
为了描述方便,我们为它建立了坐标系。

各个面的初始状态如下:
x轴正向:绿
x轴反向:蓝
y轴正向:红
y轴反向:橙
z轴正向:白
z轴反向:黄

假设我们规定,只能对该魔方进行3种操作。分别标记为:
x 表示在x轴正向做顺时针旋转
y 表示在y轴正向做顺时针旋转
z 表示在z轴正向做顺时针旋转

xyz 则表示顺序执行x,y,z 3个操作

题目的要求是:
从标准输入获得一个串,表示操作序列。
程序输出:距离我们最近的那个小方块的3个面的颜色。
顺序是:x面,y面,z面。

例如:在初始状态,应该输出:
绿红白

初始状态下,如果用户输入:
x
则应该输出:
绿白橙

初始状态下,如果用户输入:
zyx
则应该输出:
红白绿

请编程实现所述功能。

开始的时候真的不知道该怎么实现,试过了好多次,结果只要是一转就会有情况是错的,所以直接全部模拟,我用mark 来记录各个面的颜色情况,并根据旋转的方式进行及时的更新,在这里我是这样定义的,首先数组的每一行分别代表的是每一个面,也就是下图中的大写一二三,而数组的每一行也就是每一个面中的每一块也是按照下图中的1234分别编号,这样的话,开始的时候给他们初始的颜色,在每一次转动的时候对改变了的进行及时的更新,在最后的时候只要输出右上角的那块的xyz分别对应的颜色就好了(在我的这里就是[1][2]  [5][1]  [2][4])

不过在这里我用了一点小小的技巧就是用整形数组来存储颜色,每一面的每一块用一个唯一的标号来记录,最后由于开始的时候每一个面的十分位数子一样,在取余输出就好了,但是这样的话因为只要输出颜色就行,其实在开始定义的时候完全可以直接记录颜色,这样应该更方便很多,但是由于开始的时候还不是太清晰,所以就这样做了,现在既然明白了就没有必要改了,这样也算自己的做题历程吧。。。

#include <iostream>
#include <cstdio>
#include <memory.h>
#include <cmath>
using namespace std;
int main (){
string str;
cin>>str;
int mark[7][5]={ {0,0,0,0,0},{0,11,12,13,14},{0,21,22,23,24},{0,31,32,33,34},{0,41,42,43,44},{0,51,52,53,54},{0,61,62,63,64}};
int len = str.length();
for(int i=0;i<len;i++){if(str[i]=='x'){int temp1 = mark[2][4],temp2 =mark[2][3];mark[2][4]=mark[6][2],mark[2][3]=mark[6][4],//上面 mark[6][2]=mark[4][1],mark[6][4]=mark[4][2],   mark[4][1]=mark[5][3],mark[4][2]=mark[5][1];  mark[5][3]=temp1,mark[5][1]=temp2;temp1=mark[1][1];mark[1][1]=mark[1][3],mark[1][3]=mark[1][4],mark[1][4]=mark[1][2],mark[1][2]=temp1; }if(str[i]=='y'){int temp1 = mark[4][2],temp2 =mark[4][4];mark[4][2]=mark[3][3],mark[4][4]=mark[3][1];mark[3][3]=mark[2][2],mark[3][1]=mark[2][4];  mark[2][2]=mark[1][2],mark[2][4]=mark[1][4];  mark[1][2]=temp1,mark[1][4]=temp2;temp1=mark[5][4];mark[5][4]=mark[5][2],mark[5][2]=mark[5][1],mark[5][1]=mark[5][3],mark[5][3]=temp1; }if(str[i]=='z'){int temp1 = mark[1][1],temp2 =mark[1][2];mark[1][2]=mark[5][2],mark[1][1]=mark[5][1];mark[5][2]=mark[3][2],mark[5][1]=mark[3][1];  mark[3][1]=mark[6][1],mark[3][2]=mark[6][2];  mark[6][1]=temp1,mark[6][2]=temp2;temp1=mark[2][1];mark[2][1]=mark[2][3],mark[2][3]=mark[2][4],mark[2][4]=mark[2][2],mark[2][2]=temp1; }
}
string tepstr[7] = {"","绿","白","蓝","黄","红","橙"};
cout<<tepstr[ mark[1][2]/10 ]<<tepstr[ mark[5][1]/10 ]<<tepstr[ mark[2][4]/10 ]<<endl;return 0;
}

蓝桥杯---二阶魔方旋转相关推荐

  1. 蓝桥杯 二阶魔方旋转 模拟

    魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下: x轴正向:绿 x轴反向:蓝 y轴正向:红 y轴反向:橙 z轴正向: ...

  2. 蓝桥杯 二阶魔方旋转 暴力法

    魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下: x轴正向:绿 x轴反向:蓝 y轴正向:红 y轴反向:橙 z轴正向: ...

  3. 蓝桥杯:魔方旋转问题【高职组】

    题目来源 比较容易的一题,但是要心细(写了好久) 按照题目的要求展开二阶魔方: 输入x时,顺时针移动带框的部分 输入y和z同样移动相应部分. 有一点需注意: e.g.当输入x时,绿色这一面需要顺时针翻 ...

  4. 蓝桥杯之二阶魔方旋转

    /* 二阶魔方旋转 魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下: x轴正向:绿 x轴反向:蓝 y轴正向:红 y轴 ...

  5. 二阶魔方旋转 魔方可以对它的6个面自由旋转。 我们来操作一个2阶魔方(如图1所示):

    /* 二阶魔方旋转 魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下: x轴正向:绿 x轴反向:蓝 y轴正向:红 y轴 ...

  6. 【暴力模拟】二阶魔方旋转

    魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下: x轴正向:绿 x轴反向:蓝 y轴正向:红 y轴反向:橙 z轴正向: ...

  7. Java实现二阶魔方旋转

    魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下: x轴正向:绿 x轴反向:蓝 y轴正向:红 y轴反向:橙 z轴正向: ...

  8. [蓝桥杯2019初赛]旋转-找规律

    代码如下: #include <iostream> using namespace std; const int N = 110; int a[N][N];int main() {int ...

  9. 二阶魔方旋转 魔方可以对它的6个面自由旋转。 我们来操作一个2阶魔方(python版):

    def ROL(List,n,m):lidd = List[m-n:m]lidd.extend(List)lidd = lidd[0:m]return lidd class MOF():def __i ...

最新文章

  1. python request_python爬虫03 | 那个叫做 Urllib 的库让我们的 python 假装是浏览器
  2. 第四周实践项目6 循环双链表应用
  3. TI 无桥PFC方案【转子tidu312.pdf】-----图片专帖
  4. Kafka生产者详解
  5. php软件开发--mongodb
  6. Android Bitmap(位图)详解
  7. STC学习:便携式温度采集器
  8. APP专项测试方法和工具的使用
  9. 翻译:SWFObject 2.0官方文档
  10. 代码比较工具DiffMerge的下载和使用(转)
  11. 斩于马下 挑战木马克星:Ewido显神威(转)
  12. 无人机大面积航测面临的难点及解决方法
  13. 【微信小程序】选择器组件picker
  14. 苹果手机app应用显示未受信任打不开怎么办
  15. 视频教程-OpenGLES萌谷手册(iOS2018版)-其他
  16. leetcode抢救
  17. 计算机桌面显示左右有黑边,电脑屏幕显示不全左右两边黑边框 win7电脑屏幕边缘显示不全怎么调整...
  18. java实现单链表就地逆置,单链表的就地逆置讲解
  19. PHP防SQL注入代码,PHP 预防CSRF、XSS、SQL注入攻击
  20. c# 审批流引擎_C#教程之Slickflow.NET 开源工作流引擎高级开发(二|C#教程

热门文章

  1. 一位华裔复活了美国奥数国家队:掌舵 6 年 4 次夺冠,打破中国队“垄断”
  2. Git rebase(变基)操作详解
  3. mysql jpa 批注 视图_JPA 批注参考
  4. 萨特《禁闭》由他人来解读“他人即地狱”
  5. MAC OS下免费下载YouTube
  6. 苹果M1芯片MacBook/iMac/Mac mini降级或者重装系统教程
  7. 根据需求设计并实现数据库
  8. 用PyTorch进行手写数字识别
  9. 【USACO题库】1.5.4 Checker Challenge跳棋的挑战
  10. matlab中线形_MATLAB在绘图时的用法——线形图