回忆一下祖玛游戏。现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W)。 现在你手里也有几个球。
每一次,你可以从手里的球选一个,然后把这个球插入到一串球中的某个位置上(包括最左端,最右端)。接着,如果有出现三个或者三个以上颜色相同的球相连的话,就把它们移除掉。重复这一步骤直到桌上所有的球都被移除。
找到插入并可以移除掉桌上所有球所需的最少的球数。如果不能移除桌上所有的球,输出 -1 。
示例:
输入: "WRRBBW", "RB"
输出: -1
解释: WRRBBW -> WRR[R]BBW -> WBBW -> WBB[B]W -> WW (翻译者标注:手上球已经用完,桌上还剩两个球无法消除,返回-1)

输入: "WWRRBBWW", "WRBRW"
输出: 2
解释: WWRRBBWW -> WWRR[R]BBWW -> WWBBWW -> WWBB[B]WW -> WWWW -> empty

输入:"G", "GGGGG"
输出: 2
解释: G -> G[G] -> GG[G] -> empty

输入: "RBYYBBRRB", "YRBGB"
输出: 3
解释: RBYYBBRRB -> RBYY[Y]BBRRB -> RBBBRRB -> RRRB -> B -> B[B] -> BB[B] -> empty
标注:
    你可以假设桌上一开始的球中,不会有三个及三个以上颜色相同且连着的球。
    桌上的球不会超过20个,输入的数据中代表这些球的字符串的名字是 "board" 。
    你手中的球不会超过5个,输入的数据中代表这些球的字符串的名字是 "hand"。
    输入的两个字符串均为非空字符串,且只包含字符 'R','Y','B','G','W'。

详见:https://leetcode.com/problems/zuma-game/description/

C++:

class Solution {
public:int findMinStep(string board, string hand){int res = INT_MAX;unordered_map<char, int> m;for (char c : hand){++m[c];}res = helper(board, m);return res == INT_MAX ? -1 : res;}int helper(string board, unordered_map<char, int>& m) {board = removeConsecutive(board);if (board.empty()){return 0;}int cnt = INT_MAX, j = 0;for (int i = 0; i <= board.size(); ++i){if (i < board.size() && board[i] == board[j]){continue;}int need = 3 - (i - j);if (m[board[j]] >= need) {m[board[j]] -= need;int t = helper(board.substr(0, j) + board.substr(i), m);if (t != INT_MAX){cnt = min(cnt, t + need);}m[board[j]] += need;}j = i;}return cnt;}string removeConsecutive(string board) {for (int i = 0, j = 0; i <= board.size(); ++i) {if (i < board.size() && board[i] == board[j]) continue;if (i - j >= 3) return removeConsecutive(board.substr(0, j) + board.substr(i));else j = i;}return board;}
};

参考:http://www.cnblogs.com/grandyang/p/6759881.html

转载于:https://www.cnblogs.com/xidian2014/p/8904049.html

488 Zuma Game 祖玛游戏相关推荐

  1. Java实现 LeetCode 488 祖玛游戏

    488. 祖玛游戏 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色®,黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一 ...

  2. LeetCode每日一题488. 祖玛游戏

    488. 祖玛游戏 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也 ...

  3. 力扣解题思路:488. 祖玛游戏

    488. 祖玛游戏 思路: 实际上就是简单的消消乐,如果时间允许,最简单的暴力递归法也是可以的,就是把所有字母插入所有的位置,取最短且可以消去的插入球数即可.但是这样无脑插入是很浪费时间的,所以我们在 ...

  4. android+祖玛游戏源码,unity祖玛游戏Zuma Ball Blast源码

    压缩包内容概览: unity祖玛游戏Zuma Ball src ; 汇编C锐器编辑器 ; 汇编-C夏普编辑器 ; 组件-C夏普vs ; C夏普组件 ; 汇编统一脚本vs ; 汇编统一体脚本 ; 资产 ...

  5. LeetCode 力扣每日一题 488.祖玛游戏

    题目描述: 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩 ...

  6. ​LeetCode刷题实战488:祖玛游戏

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  7. Leetcode 488.祖玛游戏

    祖玛游戏 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中 ...

  8. LeetCode 488. 祖玛游戏

    题目描述 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中 ...

  9. ​LeetCode-每日一题 488. 祖玛游戏 [Java实现]

    你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩球. 你的目 ...

最新文章

  1. oracle数据物理结构包括,Oracle数据库的物理结构介绍
  2. php建立数据库操作类,PHP数据库操作类的定义及使用
  3. 第一讲 网络安全概述笔记
  4. java string问题_Java关于String的问题?
  5. SpringMVC+hibernate+mysql+EASYUI的登陆+CRUD
  6. synaptic不停抖动后自动关闭的问题
  7. SAP CRM WebClient UI的配置存储数据库表
  8. Pytorch 中 matmul 广播
  9. 「附身」马云、恶搞特朗普,AI新应用助你上演「大咖模仿秀」
  10. Linux下MongoDB服务安装
  11. 航空公司客户价值分析的实验报告
  12. java百度贴吧一键签到,手机百度贴吧怎么一键签到?手机贴吧一键签到怎么用?
  13. 如何在kylo中添加数据源
  14. MDK5 代码折叠功能
  15. 6. 中学生心理辅导
  16. S19文件解析实现代码
  17. 的c语言编程函数题,C语言编程题及答案Word版
  18. sim卡在苹果手机显示无服务器,iPhone手机没有信号怎么办 手机提示无服务怎么解决...
  19. three.js 导入显示模型的时候自动计算模型缩放比例
  20. mysql数据库索引的科普

热门文章

  1. 荣耀上鸿蒙,华为新机直接上鸿蒙OS,荣耀也有份但非全部
  2. 孙明佳谈初期创业客户流失如何找回?
  3. 饭桶:10 人工神经网络
  4. 微信小程序图片缩放、移动
  5. mysql 排序开窗函数_MySQL中实现开窗函数
  6. mysql视图怎么加字段_mysql视图添加字段
  7. 蓝桥杯 真题 救济金发放、分糖果、刽子手游戏
  8. 别找了!关于博主(工匠若水)的一切都在这里
  9. remote: Invalid username or password. fatal: Authentication failed for .......
  10. Linux虚拟机安装JDK