算法通关村第19关【青铜】| 动态规划

news2024/11/25 21:21:25

动态规划(Dynamic Programming,简称DP)是一种解决多阶段决策过程最优化问题的数学方法。它通常用于解决那些具有重叠子问题和最优子结构性质的问题,这些问题可以分解为多个相互关联的子问题。

动态规划的核心思想是将原问题分解为较小的子问题,然后解决这些子问题,最后合并它们的解以获得原问题的最优解。这个方法通常涉及到创建一个表格或数组来存储子问题的解,以避免重复计算,从而提高算法效率。

关键特征和步骤:

  1. 重叠子问题:原问题可以分解为多个相似或相同的子问题,这些子问题可能需要多次解决。

  2. 最优子结构:问题的最优解可以通过子问题的最优解构建而成。

动态规划的一般步骤如下:

  1. 确定状态:定义问题的状态,通常用一些变量表示,以便描述问题的局部特征。

  2. 定义状态转移方程:找到子问题与原问题之间的关系,这可以通过递归式或迭代式来表示。

  3. 初始化:设置边界条件或初始状态,以确保算法能够正确地运行。

  4. 填表格或数组:计算并存储子问题的解,通常使用循环结构来填充表格或数组。

  5. 解决原问题:通常,最优解可以从填充的表格或数组中提取,以得到原问题的最优解。

动态规划常用于解决许多经典问题,如背包问题、最短路径问题、编辑距离、斐波那契数列等。

例题:给定三个数135,使用这三个数有多少种方式可以构造出一个指定的n(允许重复 允许不同顺序)

n=6

1+1+1+1+1+1 1+1+1+3

1+1+3+1 1+3+1+1

3+1+1+1 3+3

1+5 5+1

例如:dp【7】=dp【7-1】+dp【7-3】+dp【7-5】

不同路径

确定dp[i][j]为走到第i行第j列的总不同路径

递推公式:dp[i][j] = dp[i-1][j]+dp[i][j-1]

初始化:第一行和第一列全为1

确定顺序:从左到右从上到下

class Solution {
    public int uniquePaths(int m, int n) {
        int[][] dp = new int[m+1][n+1];
        for(int i = 1;i<n+1;i++){
            dp[1][i] = 1;
        }
        for(int i = 1;i<m+1;i++){
            dp[i][1] = 1;
        }
        for(int i = 2;i<m+1;i++){
            for(int j = 2;j<n+1;j++){
                // System.out.print(dp[i-1][j]+" ");
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
                // System.out.print(dp[i][j]+" ");
            }
                // System.out.println();
        }
        return dp[m][n];
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1101323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android查看签名信息系列 · 使用逆向分析工具JadxGUI获取签名

前言 Android查看签名信息系列之使用逆向分析工具JadxGUI获取签名&#xff0c;通过这种方式&#xff0c;可以获取到的签名信息包括&#xff1a;MD5、SHA1、SHA-256、公钥(模数)等信息 实现方法 1、进入JadxGUI目录下的lib文件夹内&#xff0c;找到jadx-gui-1.4.7.jar文件 2、…

医疗制药行业数字化创新实践

本文将为大家分享3个制药行业的创新案例吧&#xff0c;都是在不同智能制造落地场景下的典型案例&#xff0c;希望对大家有所启发。 01 医疗设备企业零代码搭建集成式信息化管理平台&#xff0c;年节省150余万元 医疗制药行业数字化实现工具>>>>https://www.jianda…

LLVM(6)ORC实例分析:Transform in cpp

Transform用例总结 该用例调用JIT的setTransform接口&#xff0c;传入pass对IR代码做了一系列优化。优化一&#xff1a;fac函数的调用者能直接拿到返回值&#xff0c;不在需要进入fac计算了。 正常函数调用a fac(5)需要进入fac函数后才能拿到结果120。transform后&#xff0c…

java部署教程

关闭防火墙 不管是windows还是linux&#xff0c;首先必须关闭防火墙。 # linux添加8080端口 firewall-cmd --zonepublic --add-port8080/tcp --permanent#删除80端口 firewall-cmd --zonepublic --remove-port8080/tcp --permanent# 刷新使端口立即生效 firewall-cmd --reloa…

AI大模型下一步怎么走?百度携AI原生应用抢先作答

前言 10月17日&#xff0c;百度世界2023在北京首钢园召开&#xff0c;这是百度近四年来首次恢复线下举办世界大会&#xff0c;会上发布了文心大模型4.0以及基于大模型的AI原生应用的最新进展。 文章目录 前言我眼里的百度世界大会文心大模型4.0正式发布&#xff0c;与GPT4相比毫…

解决spring项目中无法加载resources下文件

解决spring项目中无法加载resources下文件 问题发现问题解决步骤一&#xff1a;检查文件名步骤二&#xff1a;确保测试资源目录步骤三&#xff1a;检查文件路径是否正确 问题发现 在学习Spring过程中&#xff0c;TestContext框架试图检测一个默认的XML资源位置。如果您的类被命…

数字孪生的多领域应用:塑造未来的可能性

数字孪生技术正迅速改变着我们与世界互动的方式&#xff0c;为各个领域带来了前所未有的机会。从制造业到医疗保健&#xff0c;再到城市规划和交通系统&#xff0c;数字孪生正在成为创新和效率提升的引擎。本文带大家分析数字孪生的一些应用场景和其潜在影响的更多细节&#xf…

QT中使用QVTKOpenGLNativeWidget的简单教程以及案例

先添加一个带有ui的QT应用程序。 一、在ui界面中添加QVTKOpenGLNativeWidget控件 先拖出来一个QOpenGLWidget控件 修改布局如下&#xff1a; 然后将QOpenGLWidget控件提升为QVTKOpenGLNativeWidget控件&#xff0c;步骤如下&#xff1a; 右击QOpenGLWidget窗口&#xff0c;选…

知识蒸馏(Knowledge Distillation)简述

知识蒸馏&#xff08;Knowledge Distillation&#xff09;简述 结论 Reference&#xff1a; Distilling the Knowledge in a Neural Network知识蒸馏&#xff08;Knowledge Distillation&#xff09;简述&#xff08;一&#xff09; 知识蒸馏被广泛用于模型压缩和迁移学习当中…

【STM32】--基础了解

一、STM32来历背景 1.从51到STM32 &#xff08;1&#xff09;单片机有很多种 &#xff08;2&#xff09;STM32内核使用ARM&#xff0c;但是ARM不一定是STM32 &#xff08;3&#xff09;ATM32是当前主流的32位高性能单片机 &#xff08;4&#xff09;STM32的特点&#xff1a;高…

数据发现工具

数据发现是从非结构化和结构化数据源中查找特定数据子集的过程&#xff0c;必须查明业务存储库中有哪些数据以及位置&#xff0c;数据发现与数据分类&#xff0c;这是根据其敏感性和脆弱性对不同类型的数据进行排序的过程&#xff0c;敏感数据发现和分类本身就是不同的过程&…

测试网线的仪器叫什么?

测试网线的仪器有哪些&#xff1f;测试网线的仪器叫什么&#xff1f;很多小伙伴对此有疑问。咱们逐一分析&#xff0c;并做出简单的讨论。 测试网线的仪器大概几类&#xff0c;从携带是否方便上来说&#xff0c;手持式和台式。从测试功能上来说&#xff0c;分为物理常量、电气…

利用在线培训系统提升员工技能,助力企业发展

近年来&#xff0c;随着互联网技术的发展&#xff0c;在线培训系统逐渐成为企业提升员工技能的利器。这种新型的培训方式打破了时间和空间的限制&#xff0c;为企业提供了更加灵活和高效的培训解决方案。下面&#xff0c;我们将详细介绍如何利用在线培训系统提升员工技能&#…

驱动数字化转型,Doris Summit Asia 2023 智慧金融与政企论坛精彩预告!

峰会官网已上线&#xff0c;最新议程请关注&#xff1a;doris-summit.org.cn 即刻报名 Doris Summit 是 Apache Doris 社区一年一度的技术盛会&#xff0c;由飞轮科技联合 Apache Doris 社区的众多开发者、企业用户和合作伙伴共同发起&#xff0c;专注于传播推广开源 OLAP 与…

一图看懂CodeArts Governance 三大特性,带你玩转开源治理服务

华为云开源治理服务CodeArts Governance是针对软件研发提供的一站式开源软件治理服务&#xff0c;凝聚华为在开源治理上的优秀实践经验&#xff0c;提供开源软件元数据及软件成分分析、恶意代码检测等能力&#xff0c;从合法合规、网络安全、供应安全等维度消减开源软件使用风险…

金媒人提问:为何还有男生觉得精致女人不顾家?

广东金媒人小编分析&#xff1a;大部分男生会觉得越精致漂亮的女生&#xff0c;不适合做老婆&#xff0c;认为找老婆还是朴实的女生好&#xff0c;起码是顾家、实在的。 为什么还会有这么多男生觉得&#xff1f;如果每天追求精致的生活和自己&#xff0c;很容易沉浸在化妆打扮上…

【分享Python代码】图片转化为素描画

哈喽&#xff0c;大家好&#xff0c;我是木易巷~ 代码生成效果图 原图&#xff1a; 生成图&#xff1a; 原图&#xff1a; 生成图&#xff1a; 准备工作 Python编程首先需要安装环境&#xff0c;下面是详细步骤&#xff1a; 会的小伙伴可自行跳过&#xff0c;代码在最后 1…

泊车功能专题介绍 ———— AVP系统定义应用场景

文章目录 介绍术语 系统定义系统架构系统类型 应用场景安全场景简介安全场景定义介绍安全场景外部环境 安全场景定义开启场景结束场景车位被占用搜索车位无空闲车位路口/出入口/跨层通道减速障碍物阻挡发生碰撞车辆离线光线变化天气变化环境变化常见障碍物类型 行人安全场景车辆…

USART使用

USART软件配置 具体步骤如下&#xff1a;&#xff08;USART 相关库函数在 stm32f10x_usart.c 和 stm32f10x_usart.h 文件中&#xff09; &#xff08;1&#xff09;使能串口时钟及 GPIO 端口时钟 前面说过 STM32F103C8T6 芯片具有 3 个串口&#xff0c;对应不同的引脚&#…

Vue3分支语法-登录注销

点击登录 点击注销登录 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!-- vue.js --><script src"https://unpkg.com/vue3/dist/vue.global.js"><…