[Leetcode]664. Strange Printer
来源:互联网 发布:手机虚拟歌姬软件 编辑:程序博客网 时间:2024/06/05 01:03
[Leetcode]664. Strange Printer
Description
664. Strange Printer
Analysis
此题可以采取动态规划的想法。具体做法如下:
时间复杂度:O( n^2 ), 空间复杂:O( n^2 )
code
#include <iostream>#include <vector>using namespace std;class Solution {public: int strangePrinter(string s) { if (s.length() == 0) { return 0; } string unique_s; unique_s += s[0]; for (int i = 1; i < s.length(); i++) { if (s[i] != s[i - 1]) { unique_s += s[i]; } } vector<vector<int>> matrix(unique_s.length(), vector<int>(unique_s.length(), 0)); return dp(matrix, unique_s, 0, unique_s.length() - 1); } int dp(vector<vector<int>> &matrix, string s, int i, int j) { if (i == j) { return 1; } if (i > j) { return 0; } if (matrix[i][j] != 0) { return matrix[i][j]; } matrix[i][j] = dp(matrix, s, i + 1, j) + 1; for (int k = i + 1; k <= j; k++) { if (s[i] == s[k]) { matrix[i][j] = min(matrix[i][j], dp(matrix, s, i, k - 1) + dp(matrix, s, k + 1, j)); } } return matrix[i][j]; }};int main() { string s; cin >> s; Solution so; cout << so.strangePrinter(s) << endl; return 0;}
Conclude
对于动态规划问题,最重要的考虑的就是寻找状态转移方程,而状态转移方程又来自于子问题的分析。也就是需要把一个大问题分解为若干个子问题,每个子问题都可以有解,并且子问题的解又来自其他子问题的解。
阅读全文
0 0
- [leetcode]664. Strange Printer
- [Leetcode]664. Strange Printer
- Leetcode: 664. Strange Printer
- Strange Printer (leetcode)
- 664. Strange Printer
- 664. Strange Printer
- 【LeetCode】664.Strange Printer(hard)解题报告
- leetcode 664. Strange Printer 奇怪的打印机 + 动态规划DP
- LeetCode: -Dynamic Programming-Strange Printer[664]
- Strange Printer
- 664Strange Printer
- leetcode_664. Strange Printer ? 待解决
- 算法练习(7) —— 动态规划 Strange Printer
- Printer
- Printer Printer
- Printer.cs
- printer repair
- linux printer
- javaBean vlidation(2)—内置约束
- 使用vuejs+express+mongodb 开发一款销售仓库管理系统
- 基于stm32f103的BMP085气压计的检测
- 交换机路由器转发包的过程
- python字符串前面加u,r,b的含义
- [Leetcode]664. Strange Printer
- 阿里云linux服务器配置(node环境)
- 【安全牛学习笔记】SQLMAP自动注入-ENUMERATION、BRUTE FORCE、UDF INJECTION、FILE SYSTEM、OS、WINDOWS REGISTORY、GENERAL、M
- 人无信则不立,您了解自己的信用情况吗?
- let变量提升问题
- 55. Jump Game
- 你用TensorFlow做过哪些有趣的尝试?
- Discuz全版本任意文件删除漏洞
- Android SDK 26 源码下载失败问题解决