城市交通【DP】

> Description

有n个城市,编号1~n,有些城市之间有路相连,有些则没有,有路则当然有一个距离。现在规定只能从编号小的城市到编号大的城市,问你从编号为1的城市到编号为n的城市之间的最短距离是多少?


> Input

先输入一个n,表示城市数,n小于100。
下面的n行是一个n*n的邻接矩阵map[i,j],其中map[i,j]=0表示城市i和城市j之间没有路相连,否则为两者之间的距离。


> Output

输出格式:一个数,表示最少要多少时间。
输入数据保证可以从城市1飞到城市n。


> Sample Input

11
0 5 3 0 0 0 0 0 0 0 0
5 0 0 1 6 3 0 0 0 0 0
3 0 0 0 8 0 4 0 0 0 0
0 1 0 0 0 0 0 5 6 0 0
0 6 8 0 0 0 0 5 0 0 0
0 3 0 0 0 0 0 0 0 8 0
0 0 4 0 0 0 0 0 0 3 0
0 0 0 5 5 0 0 0 0 0 3
0 0 0 6 0 0 0 0 0 0 4
0 0 0 0 0 8 3 0 0 0 3
0 0 0 0 0 0 0 3 4 3 0
在这里插入图片描述


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
动态规划是一种常用的优化问题求解方法,它通过将问题分解为子问题,并利用子问题的解来构建原问题的解。在动态规划中,我们通常需要设计合适的数据结构和算法来实现问题的求解。 对于友好城市问题,我们可以使用一个二维数组来表示城市之间的友好程度。假设有n个城市,我们可以定义一个n×n的矩阵,其中矩阵的第i行第j列表示第i个城市和第j个城市之间的友好程度。这个矩阵可以用来存储城市之间距离、交通情况等信息。 在设计算法时,我们可以使用动态规划来解决友好城市问题。具体步骤如下: 1. 定义子问题:将原问题分解为子问题,例如,我们可以定义子问题为求解从城市1到城市i的最大友好程度。 2. 确定状态:确定子问题的状态,例如,我们可以使用一个一维数组dp来表示从城市1到城市i的最大友好程度。 3. 确定状态转移方程:根据子问题的定义和状态的确定,确定状态转移方程,即如何通过已知状态求解未知状态。例如,我们可以使用以下状态转移方程来求解最大友好程度: dp[i] = max(dp[j] + matrix[j][i]),其中j表示从城市1到城市i-1的路径。 4. 确定初始条件和边界情况:确定初始条件和边界情况,例如,初始条件可以是dp = 0,边界情况可以是dp[i] = -∞(表示不可达)。 5. 自底向上求解:根据状态转移方程和初始条件,自底向上求解子问题,最终得到原问题的解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值