不负红颜 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

    评论

报告相同问题?

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?