刺激基质上的液体流动

  • 本文关键字:刺激 python matrix path
  • 更新时间 :
  • 英文 :


我必须模拟液体流过包含一组整数的方阵。液体应该从矩阵的左上角开始。它只能向右侧或相邻矩阵下方移动。相邻矩阵的值越低,其流动的可能性就越高。液体的运动被认为停止在矩阵的右边或下边。该程序应该能够显示液体通过的所有数字的总和。

import numpy as np
mtr= np.array ([[0, 2, 9], 
[4, 9, 8], 
[6, 8, 1]])
print(mtr)
def min_adj_val(a, b): 
if (a < b): 
return a 
else: 
return b 
def min_mtr(mtr, m, n):
if (m == 2 or n == 2):
return mtr[m][n]
else:
return mtr[m][n] + min_adj_val(min_mtr(mtr, m+1, n),min_mtr(mtr, m, n+1))
print(min_mtr(mtr,0, 0)) 

以上代码输出:10

预计为:11

按照路径0-2-9,我希望它是11。但它选择了成本最低的路径,即0-4-6。我是初学者,刚学会编码大约4个月。请帮帮我。

每次对min_mtr的调用都将返回从(0, 0)(m, n)的最短路径。当您调用min_adj_val时,您的参数是对min_mtr的递归调用,这意味着您的函数所要做的就是保持迄今为止看到的最短路径长度,并将其添加到当前索引中。

一个更好的解决方案是编写一个贪婪函数,该函数选择最小相邻索引,并将其值添加到运行总数中,一直移动到达到边界。

相关内容

  • 没有找到相关文章

最新更新