当前位置: 首页 > news >正文

动态规划法在解决实际问题中的应用

实际上,我们可以从根结点出发,深度优先搜索这棵二叉树。对于每棵子树,其子树元素和等于子树根结点的元素值,加上左子树的元素和,以及右子树的元素和。

每个房子可以被粉刷成三种颜色中的一种,需要计算在满足相邻房子的颜色不同的情况下粉刷所有房子的最小花费成本。由于当已知粉刷前 i 个房子的最小花费成本时,根据粉刷第 i+1 号房子的花费成本可以计算粉刷前 i+1 个房子的最小花费成本,因此可以使用动态规划计算最小花费成本。

由于每个房子可以被粉刷成三种颜色中的一种,因此需要分别考虑粉刷成三种颜色时的最小花费成本。

用 dp[i][j] 表示粉刷第 0 号房子到第 i 号房子且第 i 号房子被粉刷成第 j 种颜色时的最小花费成本。由于一共有 n 个房子和 3 种颜色,因此 0≤i<n0 ,0≤j<3 。

当只有第 0 号房子被粉刷时,对于每一种颜色,总花费成本即为将第 0 号房子粉刷成该颜色的花费成本,因此边界条件是:对于任意 0≤j<30 ,dp[0][j]=costs[0][j]。

对于 1≤i<n1 ,第 i 号房子和第 i−1 号房子的颜色必须不同,因此当第 i 号房子被粉刷成某一种颜色时,第 i−1 号房子只能被粉刷成另外两种颜色之一。当第 i 号房子分别被粉刷成三种颜色时,粉刷第 0 号房子到第 i 号房子的最小花费成本计算如下:

代码

C#

public class Solution {public int MinCost(int[][] costs) {int n = costs.Length;int[] dp = new int[3];for (int j = 0; j < 3; j++) {dp[j] = costs[0][j];}for (int i = 1; i < n; i++) {int[] dpNew = new int[3];for (int j = 0; j < 3; j++) {dpNew[j] = Math.Min(dp[(j + 1) % 3], dp[(j + 2) % 3]) + costs[i][j];}dp = dpNew;}return Math.Min(Math.Min(dp[0], dp[1]), dp[2]);}
}

C++

class Solution {
public:int minCost(vector<vector<int>>& costs) {int n = costs.size();vector<int> dp(3);for (int j = 0; j < 3; j++) {dp[j] = costs[0][j];}for (int i = 1; i < n; i++) {vector<int> dpNew(3);for (int j = 0; j < 3; j++) {dpNew[j] = min(dp[(j + 1) % 3], dp[(j + 2) % 3]) + costs[i][j];}dp = dpNew;}return *min_element(dp.begin(), dp.end());}   
};

 

 

相关文章:

  • 论文笔记:DreamDiffusion
  • CDN安全加速:HTTPS加密最佳配置方案
  • 【深度学习】13. 图神经网络GCN,Spatial Approach, Spectral Approach
  • ABP 框架集成 EasyAbp.Abp.GraphQL 构建高性能 GraphQL API
  • 蓝牙和wifi相关的杂项内容总结
  • <线段树>
  • [嵌入式实验]实验四:串口打印电压及温度
  • Java求职面试:从核心技术到AI与大数据的全面考核
  • 不起火,不爆炸,高速摄像机、数字图像相关DIC技术在动力电池新国标安全性能测试中的应用
  • 005 ElasticSearch 许可证过期问题
  • 深入了解linux系统—— 库的制作和使用
  • IBM DB2数据库管理工具IBM Data Studio
  • Unity QFramework 简介
  • Git 教程 | 如何将指定文件夹回滚到上一次或某次提交状态(命令详解)
  • 基于多尺度卷积和扩张卷积-LSTM的多变量时间序列预测
  • Orcad 修复Pin Name重复问题
  • MonoPCC:用于内窥镜图像单目深度估计的光度不变循环约束|文献速递-深度学习医疗AI最新文献
  • 5.3.1_2二叉树的层次遍历
  • Relooking:损失权重λ 、梯度权重α、学习率η
  • http传输协议的加密
  • 帝国做的网站怎么上传/百度关键词搜索排名
  • 搜索引擎优化中的步骤包括/整站优化
  • 住房和城乡建设部网站安全分会/检测网站是否安全
  • 垦利区建设局网站/有没有购买链接
  • 温州网站建设制作/培训心得总结
  • 凤阳县建设局网站/谷歌seo是指什么意思