文章目录

  • 1. 题目
  • 2. 解题

1. 题目

有台奇怪的打印机有以下两个特殊要求:

  • 打印机每次只能打印由 同一个字符 组成的序列。
  • 每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。

给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数

示例 1:
输入:s = "aaabbb"
输出:2
解释:首先打印 "aaa" 然后打印 "bbb"。示例 2:
输入:s = "aba"
输出:2
解释:首先打印 "aaa" 然后在第二个位置打印 "b" 覆盖掉原来的字符 'a'。提示:
1 <= s.length <= 100
s 由小写英文字母组成

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/strange-printer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • dp[i][j] 表示打印 区间 [i,j] 需要的最少次数
class Solution {public:int strangePrinter(string s) {int n = s.size();vector<vector<int>> dp(n, vector<int>(n, INT_MAX));for(int i = 0; i < n; ++i)dp[i][i] = 1; // 初始情况for(int j = 1; j < n; ++j){for(int i = j-1; i >= 0; --i){if(s[i] == s[j]) // 两端的字符一样dp[i][j] = dp[i][j-1]; // j 字符 可以 跟 i 一同打印else // 两端不一样,枚举区间的中间切分点{for(int k = i; k < j; ++k){dp[i][j] = min(dp[i][j], dp[i][k]+dp[k+1][j]);}}}}return dp[0][n-1];}
};

144 ms 9.2 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 664. 奇怪的打印机(区间DP)相关推荐

  1. Java实现 LeetCode 664 奇怪的打印机(DFS)

    664. 奇怪的打印机 有台奇怪的打印机有以下两个特殊要求: 打印机每次只能打印同一个字符序列. 每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符. 给定一个只包含小写英文字母的字符 ...

  2. leetcode 664. 奇怪的打印机(dp)

    题目 有台奇怪的打印机有以下两个特殊要求: 打印机每次只能打印由 同一个字符 组成的序列. 每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符. 给你一个字符串 s ,你的任务是计算这 ...

  3. 喵哈哈村的打印机游戏(区间DP)

    喵哈哈村的打印机游戏 发布时间: 2017年3月21日 20:00   最后更新: 2017年3月21日 20:02   时间限制: 1000ms   内存限制: 128M 描述 喵哈哈村的月亮同学很 ...

  4. qscoj 喵哈哈村的打印机游戏(区间dp)

    题目链接:http://www.qscoj.cn/problem/54/ 喵哈哈村的打印机游戏 发布时间: 2017年3月21日 20:00 最后更新: 2017年3月21日 20:02 时间限制: ...

  5. LeetCode 1745. 回文串分割 IV(区间DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串 s ,如果可以将它分割成三个 非空 回文子字符串,那么返回 true ,否则返回 false . 当一个字符串正着读和反着读是一模一样的, ...

  6. LeetCode 1278. 分割回文串 III(区间DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个由小写字母组成的字符串 s,和一个整数 k. 请你按下面的要求分割字符串: 首先,你可以将 s 中的部分字符修改为其他的小写英文字母. 接着,你需 ...

  7. LeetCode 1312. 让字符串成为回文串的最少插入次数(区间DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符. 请你返回让 s 成为回文串的 最少操作次数 . 「回文串」是正读和反读都相同的字 ...

  8. LeetCode 1130. 叶值的最小代价生成树(区间DP/单调栈贪心)

    文章目录 1. 题目 2. 解题 2.1 DP 2.2 单调栈贪心 1. 题目 给你一个正整数数组 arr,考虑所有满足以下条件的二叉树: 每个节点都有 0 个或是 2 个子节点. 数组 arr 中的 ...

  9. LeetCode 1039. 多边形三角剖分的最低得分(区间DP)

    文章目录 1. 题目 2. 解题 1. 题目 给定 N,想象一个凸 N 边多边形,其顶点按顺时针顺序依次标记为 A[0], A[i], ..., A[N-1]. 假设您将多边形剖分为 N-2 个三角形 ...

最新文章

  1. Android外设存储设备的访问及测试
  2. 【Origin】晨起忆梦
  3. eeglab教程系列(15)-绘制独立成分ERP贡献
  4. mysql数据库知识点梳理_MySQL数据库知识点整理 (持续更新中)
  5. oDesk: 最为严谨的外包服务中介平台
  6. 设置cookie存活时间_Cookie的存活时间
  7. RHEL5 telnet服务 安装配置
  8. 机器学习十大常用算法
  9. Mac本配置adb环境,通过adb安装apk。
  10. 电子警察技术原理分析
  11. android耳机检测驱动程序,USB 音频 CTS 验证程序测试
  12. 团体项目搜查令更新一
  13. QCon全球软件开发大会(北京站)将于4月25日开幕
  14. AntDesignVue中Table表格嵌套子表格expandedRowRender插槽用法
  15. 浏览器被劫持打开变成hao123 和 vs CODE编译器无法打开浏览器问题
  16. 论文排版中MathType的使用(论文投稿必备)
  17. 前程无忧网站,职位信息一步到位函数爬取!!!真一步到位
  18. 同步FIFO(Verilog)
  19. sklearn-随机森林
  20. Java开源项目—知识付费(多个版本)

热门文章

  1. html如何设置滑轮效果,HTML中鼠标滚轮事件onmousewheel处理
  2. windows无法访问指定设备路径或文件_完全免费的文件数据恢复工具:Microsoft Windows File Recovery...
  3. 删除github上的commit历史记录
  4. Java笔记04-核心类库
  5. Flask的csrf_token的用法
  6. java连接数据库sql server_将SQL Server数据库连接到Java
  7. GetProcAddress()用法
  8. 字符串类型、结构体、共用体、枚举、container宏、内存来源
  9. ios开发网络篇—HTTP协议 - 转
  10. 抽象类(Abstract)和接口的不同点、共同点(Interface)。