动态规划-区间dp-Palindrome Removal
2024-10-08 20:17:49
2019-11-09 10:31:09
问题描述:
问题求解:
n = 100,典型的O(n ^ 3)的动规问题。一般来说这种O(n ^ 3)的问题可以考虑使用区间dp来解决。
区间dp是典型的三层结构,最外围枚举区间长度,中间层枚举起点,最里层枚举截断点,因此区间dp的时间复杂度往往为O(n ^ 3)。
public int minimumMoves(int[] arr) {
int n = arr.length;
int[][] dp = new int[n + 1][n + 1];
for (int i = 0; i < n; i++) dp[i][i] = 1;
for (int len = 2; len <= n; len++) {
for (int i = 0; i <= n - len; i++) {
int j = i + len - 1;
dp[i][j] = 1 + dp[i + 1][j];
if (arr[i] == arr[i + 1]) dp[i][j] = Math.min(dp[i][j], 1 + dp[i + 2][j]);
for (int k = i + 2; k <= j; k++) {
if (arr[k] == arr[i]) {
dp[i][j] = Math.min(dp[i][j], dp[i + 1][k - 1] + dp[k + 1][j]);
}
}
}
}
return dp[0][n - 1];
}
最新文章
- Linux服务器(Ubuntu14.04)添加远程连接VNC Server
- 【转载】Linux下makefile详解--跟我一起写 Makefile
- SQL中char、varchar、nvarchar的区别(zhuan)
- nginx服务器在IE下载时,apk,ipa文件变成zip的解决方法
- 原生与jqueryDOM
- iOS-本地推送(本地通知)
- AngularJs学习之ng-repeat
- C语言生产随机数的方法
- Hibernate @Embeddable注解
- python 学习 设计模式(goF设计模式)
- Process &#39;command &#39;/usr/lib/jvm/jdk1.8.0_25/bin/java&#39;&#39; finished with non-zero exit value 2
- 第一章 oracle数据库基础
- Akka(16): 持久化模式:PersistentFSM-可以自动修复的状态机器
- 修改Linux用户配置之后先验证再退出
- html/css杂题
- Android SDK的下载与安装
- Swing的特性
- js代码解析原则
- selenium:2.selenium 键盘事件模拟
- 关于sparksql操作hive,读取本地csv文件并以parquet的形式装入hive中