1. 首页 > 电脑教程 > 网易的算法高手GG写给MM的魔方

网易的算法高手GG写给MM的魔方

题目描述:据说,网易有自主开发的游戏引擎,参与开发的个个都是算法高手,喜欢研究各种好玩的东西。有一天,有个小mm得到了一个魔方,不过魔方不是常规的3*3*3的!而是大小是2*2*3的一个长方体!她实在搞不定这种异形魔方,于是只好求助于引擎部某GG。那GG看到后说,这太简单了,等我一会儿。没多久,程序写好后,一下子就把小mm需要的公式算出来了,那个mm惊叹不已,并用这些公式迅速把魔方还原好了。让小mm佩服的不得了。你的算法能力怎么样呢?你也能办到吗?输入:魔方摆放例图(并且假设颜色分布为上黄下白左蓝右绿前红后橙): 2 3 1 0 10 11 9 8 6 7 5 4请你编写函数:int solve(const int m[], const int s[], char ans[])参数意义如下:m[] : 例图中的是位置编号,也是复原后的方块编号;   m[a] = b 表示在位置a的地方,放了一个编号为b的方块   m这个数组的长度为12s[] : 用来表示每一块主色的朝向,黄白为主色,没有前两色时以红橙为主色;   主色面向上为0,向下为1,左为2,右为3,前为4,后为5   如附图sample,U面上各块,主色都面向上,朝向值为0   中层RF块,橙色面朝右,值为3。s这个数组的长度为12

输出:ans[]:返回复原(只需要各面同色)的最少的操作步骤,写法类似魔方公式:   UDLRFB分别表示相应面,单独写一个字母表示这个面顺时针旋转90度,   R2表示R面旋转180度,U'表示U面逆时针旋转90度。   U的旋转方向是0->1->2->3,U'是0->3->2->1   D的旋转方向是4->7->6->5,D'是4->5->6->7   R2只算一步,步数以这6个字母的出现次数为准,之间不要用空格分隔函数返回值:返回还原的最少步数,要与ans里的步数一致。样例输入:m= 3 2 4 5 0 1 7 6 9 11 10 8 s= 0 0 0 0 1 1 1 1 4 4 5 5样例输出:4 DUF2R2其它信息:输出的如4 DUF2R2,4表示返回值,返回值的答案唯一DUF2R2为ans数组中的内容,ans中的内容不唯一,只要是任意一解即可

样例中的实际形状见题目数据保证出的数据是合理的,不会出现还原不了的情况提交的代码不要出现main函数另:如果你是色盲或者色弱,看不清楚图片上的颜色,也请加初级一群19472277(已经在中级群或者主群的就免加了),会给你更详细的解释难度:Hard

声明:希维路由器教程网提供的内容,仅供网友学习交流,如有侵权请与我们联系删除,谢谢。ihuangque@qq.com
本文地址:https://www.ctrlcv.com.cn/diannao/169323484110705.html