控制台-cmd 2024-03-22 18:36 采纳率: 33.3%
浏览 8

这谁有思路?看一下吧

谁知道这怎么写?
想了半天,它说用二维数组,但咋做?谁来讲一下?
传送门:https://qqwhale.com/group/999/training/10293/problem/8222

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-22 18:37
    关注
    让阿豪来帮你解答,本回答参考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])

    评论

报告相同问题?

问题事件

  • 创建了问题 3月22日

悬赏问题

  • ¥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版本)时遇到如下问题