西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发VC|VC++ → 网易的算法高手GG写给MM的魔方

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

相关软件相关文章发表评论 来源:本站整理时间:2010/10/4 0:46:44字体大小:A-A+

作者:佚名点击:233次评论:0次标签: 网易 魔方

  • 类型:动作射击大小:0KB语言:中文 评分:10.0
  • 标签:
立即下载

 题目描述:
据说,网易有自主开发的游戏引擎,参与开发的个个都是算法高手,喜欢研究各种好玩的东西。
有一天,有个小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这个数组的长度为12
s[] : 用来表示每一块主色的朝向,黄白为主色,没有前两色时以红橙为主色;
   主色面向上为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

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)