联通图形和最小花费路径(MCP)

本文介绍了最小花费路径(MCP)问题,给出从(0,0)到(M,N)的最小成本路径计算方法,涉及矩阵成本、向右下移动规则。通过最优子结构和重叠子问题分析,指出该问题适合使用动态规划解决。此外,还提及了联通图形在去哪儿2017校招真题中的应用以及图的连通性问题。
摘要由CSDN通过智能技术生成

最小花费路径(MCP)

给定一个矩阵cost[][]和其中的一个位置(m,n),写一个函数,返回从到达(0,0)到(M,N)最小成本路径的花费。该矩阵的每个格子代表遍历该格子的花费。到达(M,N)的路径的总成本是该路径上(包括源和目标)所有的费用总和。你只能从开始位置 向右、下和右下走,也就是说,从一个给定的格子(I,J),只有(i+1,j)的(i,j +1)和(i +1, j +1)的可以通过。你可以假设所有的花费都是正整数。

例如,在下面的图中,到(2,2)的最小花费路径?


最小花费的路径,如下图高亮显示。 的路径为(0,0) – >(0,1) – >(1,2) – >(2,2)。路径的成本是8(1 + 2 + 2 + 3)。


1)最优子结构
的路径到达(M,N)必须通过3格子中的一个:(M-1,N-1)或(m-1,n)或(M,N-1)。 到达(M,N),所以最小的花费路径可以写成“3个格子最小的 加[M] [N]的花费”。

minCost(m, n) = min (minCost(m-1, n-1), minCost(m-1, n), minCost(m, n-1)) + cost[m][n]

2)重叠子问题
以下是直接的递归实现的最小花费路径的问题,用的上面的递归函数

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值