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];
}

  

最新文章

  1. Linux服务器(Ubuntu14.04)添加远程连接VNC Server
  2. 【转载】Linux下makefile详解--跟我一起写 Makefile
  3. SQL中char、varchar、nvarchar的区别(zhuan)
  4. nginx服务器在IE下载时,apk,ipa文件变成zip的解决方法
  5. 原生与jqueryDOM
  6. iOS-本地推送(本地通知)
  7. AngularJs学习之ng-repeat
  8. C语言生产随机数的方法
  9. Hibernate @Embeddable注解
  10. python 学习 设计模式(goF设计模式)
  11. Process &#39;command &#39;/usr/lib/jvm/jdk1.8.0_25/bin/java&#39;&#39; finished with non-zero exit value 2
  12. 第一章 oracle数据库基础
  13. Akka(16): 持久化模式:PersistentFSM-可以自动修复的状态机器
  14. 修改Linux用户配置之后先验证再退出
  15. html/css杂题
  16. Android SDK的下载与安装
  17. Swing的特性
  18. js代码解析原则
  19. selenium:2.selenium 键盘事件模拟
  20. 关于sparksql操作hive,读取本地csv文件并以parquet的形式装入hive中

热门文章

  1. android activity 启动过程分析(source code 4.4)
  2. [讨论] 平台建设,我们从架构中去掉kafka?
  3. Sentinel基于Apollo的持久化改造
  4. py装饰器,生成器,迭代器
  5. 关于IT培训机构的个人看法
  6. 授人以渔式解析原生JS写轮播图
  7. 关于CSS设置页面背景图的一些疑问
  8. c语言之学生管理系统
  9. VUE三 vue-router(路由)详解
  10. 写react项目要注意的事项