不负红颜 2017-11-01 15:34 采纳率: 0%
浏览 1719
已结题

面试遇的算法题求大神破解

今天面试遇了一个很有意思的消除算法题。
大概有点类似祖玛游戏,三个同样的数字在一起可以消除,连续消除分数会更高。

比如面试出题:1123133221 要求写一组算法找出去掉哪些数字会使得最高。

也就意味着算法要使这组数字变为112333221这样的一组三连消,333消除完后变成112221,继续触发连消变成111。这就算是一个三连消,分数会得分最高。总之连消越多分数越高。

规则应该大致上面这样,当时面试官会随机写一堆数字,类似这样:12342212321123123112113 我当时就懵逼了,有大佬会解这种题吗?来点思路和伪代码我研究一下

补充一下:该题最主要目的是要在一个很长的字符串中,找出去除哪些坐标的字符,可达到最大连消。这个字符可能是:adfsfs321423423121234sddaaadaa2234abj

  • 写回答

10条回答 默认 最新

  • 郭建堂 2017-11-02 02:21
    关注

    定义数组 int total[9] = 0
    先遍历一遍数字, 每一位上的数 total[x] = total[x] + 1

    这里提供同一种简单的做法, 比如你举的例子, 1123133221. total[1] = 4 total[2]=3 total [3] = 3.

    1112233321, 这样就OK了.

    说通俗点步骤是:
    1.遍历数组找到所有total[i] > 2 的数组下标并记录(例子中1 2 3).如果 total[i] < 3 && total [i] > 0, 那就先输出total[i]个i
    2.对于上一步记录的下标(1 2 3) , 先正序遍历(1->2->3),对于每个下标, 输出total[i]-1 个 i
    3. 对于上上一步记录的下标(1 2 3), 倒序遍历(1<-2<-3), 对于每个小标, 输出i

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能