488 Zuma Game 祖玛游戏
回忆一下祖玛游戏。现在桌上有一串球,颜色有红色(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 祖玛游戏相关推荐
- Java实现 LeetCode 488 祖玛游戏
488. 祖玛游戏 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色®,黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一 ...
- LeetCode每日一题488. 祖玛游戏
488. 祖玛游戏 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也 ...
- 力扣解题思路:488. 祖玛游戏
488. 祖玛游戏 思路: 实际上就是简单的消消乐,如果时间允许,最简单的暴力递归法也是可以的,就是把所有字母插入所有的位置,取最短且可以消去的插入球数即可.但是这样无脑插入是很浪费时间的,所以我们在 ...
- android+祖玛游戏源码,unity祖玛游戏Zuma Ball Blast源码
压缩包内容概览: unity祖玛游戏Zuma Ball src ; 汇编C锐器编辑器 ; 汇编-C夏普编辑器 ; 组件-C夏普vs ; C夏普组件 ; 汇编统一脚本vs ; 汇编统一体脚本 ; 资产 ...
- LeetCode 力扣每日一题 488.祖玛游戏
题目描述: 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩 ...
- LeetCode刷题实战488:祖玛游戏
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- Leetcode 488.祖玛游戏
祖玛游戏 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中 ...
- LeetCode 488. 祖玛游戏
题目描述 回忆一下祖玛游戏.现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W). 现在你手里也有几个球. 每一次,你可以从手里的球选一个,然后把这个球插入到一串球中 ...
- LeetCode-每日一题 488. 祖玛游戏 [Java实现]
你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩球. 你的目 ...
最新文章
- oracle数据物理结构包括,Oracle数据库的物理结构介绍
- php建立数据库操作类,PHP数据库操作类的定义及使用
- 第一讲 网络安全概述笔记
- java string问题_Java关于String的问题?
- SpringMVC+hibernate+mysql+EASYUI的登陆+CRUD
- synaptic不停抖动后自动关闭的问题
- SAP CRM WebClient UI的配置存储数据库表
- Pytorch 中 matmul 广播
- 「附身」马云、恶搞特朗普,AI新应用助你上演「大咖模仿秀」
- Linux下MongoDB服务安装
- 航空公司客户价值分析的实验报告
- java百度贴吧一键签到,手机百度贴吧怎么一键签到?手机贴吧一键签到怎么用?
- 如何在kylo中添加数据源
- MDK5 代码折叠功能
- 6. 中学生心理辅导
- S19文件解析实现代码
- 的c语言编程函数题,C语言编程题及答案Word版
- sim卡在苹果手机显示无服务器,iPhone手机没有信号怎么办 手机提示无服务怎么解决...
- three.js 导入显示模型的时候自动计算模型缩放比例
- mysql数据库索引的科普
热门文章
- 荣耀上鸿蒙,华为新机直接上鸿蒙OS,荣耀也有份但非全部
- 孙明佳谈初期创业客户流失如何找回?
- 饭桶:10 人工神经网络
- 微信小程序图片缩放、移动
- mysql 排序开窗函数_MySQL中实现开窗函数
- mysql视图怎么加字段_mysql视图添加字段
- 蓝桥杯 真题 救济金发放、分糖果、刽子手游戏
- 别找了!关于博主(工匠若水)的一切都在这里
- remote: Invalid username or password. fatal: Authentication failed for .......
- Linux虚拟机安装JDK