谁知道这怎么写?
想了半天,它说用二维数组,但咋做?谁来讲一下?
传送门:https://qqwhale.com/group/999/training/10293/problem/8222
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
这谁有思路?看一下吧
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
问题描述: 给定一个n行m列的矩形,每个格子里有一个数字。现在要计算一条起点在矩形的左上角,终点在矩形的右下角的路径,其经过的数字之和最小。其中,路径需满足只能向下或向右移动。 解答: 此题可以用动态规划来解决。我们可以定义一个二维数组dp,表示从起点到达第i行第j列的最小路径和。则有转移方程: dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + a[i][j] 其中,a[i][j]表示矩形中第i行第j列的数字。 边界条件为dp[0][0] = a[0][0],dp[0][j] = dp[0][j-1] + a[0][j],dp[i][0] = dp[i-1][0] + a[i][0]。 最后,答案即为dp[n-1][m-1]。 以下是Python代码实现: n, m = map(int, input().split()) a = [] for i in range(n):a.append(list(map(int, input().split())))
初始化dp数组
dp = [[0]*m for i in range(n)] dp[0][0] = a[0][0] for i in range(1, n): dp[i][0] = dp[i-1][0] + a[i][0] for j in range(1, m): dp[0][j] = dp[0][j-1] + a[0][j]
动态规划
for i in range(1, n): for j in range(1, m): dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + a[i][j] print(dp[n-1][m-1])
解决 无用评论 打赏 举报
悬赏问题
- ¥15 (标签-考研|关键词-set)
- ¥15 求修改代码,图书管理系统
- ¥15 请问有没求偏多标签数据集yeast,reference,recreation,scene,health数据集。
- ¥15 传感网应用开发单片机实训
- ¥15 Delphi 关于sAlphaImageList使用问题
- ¥15 寻找将CAJ格式文档转txt文本的方案
- ¥15 shein测试开发会问些啥我是写java的
- ¥15 关于#单片机#的问题:我有个课程项目设计,我想在STM32F103veTX单片机,M3主控模块上设计一个程序,在Keil uVision5(C语言)上代码该怎么编译?(嫌钱少我可以加钱,急急急)
- ¥15 opnet仿真网络协议遇到问题
- ¥15 在安装python的机器学习程序包scikit-learn(1.1版本)时遇到如下问题