【算法】动态规划

一、算法概念

  • 动态规划算法是一种解决多阶段决策问题的方法。它将一个问题分解为多个子问题,并逐个求解子问题的最优解,最后得到原问题的最优解。

二、基本思想

  • 动态规划算法的核心思想是通过存储中间结果避免重复计算。在解决问题的过程中,会利用已经求解过的子问题的最优解来求解当前问题的最优解。
  • 动态规划算法可以解决很多实际问题,例如背包问题、最长公共子序列问题、最短路径问题等。它具有时间复杂度低、解决问题的范围广等优点,但在问题的状态转移方程的建立初始状态的确定上需要一定的技巧和经验。

三、算法步骤

  1. 定义问题的状态:将原问题拆分为若干个子问题,并定义每个子问题的状态。
  2. 定义问题的状态转移方程:通过分析子问题之间的关系,建立起子问题之间的转移关系,即求解当前问题的最优解的公式。
  3. 定义初始状态:确定最简单的子问题的最优解,作为初始状态。
  4. 自底向上求解:从初始状态开始,按照状态转移方程逐步求解子问题的最优解,最终得到原问题的最优解。

四、简单实现示例【最长回文子串】

题干:

给你一个字符串 s,找到 s 中最长的回文子串

示例:

示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。

示例 2:
输入:s = “cbbd”
输出:“bb”

提示:

1 <= s.length <= 1000
s 仅由数字和英文字母组成

解法:

class Solution {
   
    public String longestPalindrome(String s) {
   
         if(s.length()==1){
   
            System.out.println(s);
        }
        int start = 0;
        int maxLen = 1;
        char[] chars = s.toCharArray();
        if(chars
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值