【问题标题】:optimised pascals triangle with dynamic programming using python使用 python 进行动态编程的优化帕斯卡三角形
【发布时间】:2021-07-20 10:43:37
【问题描述】:
def pascal(row, col):
    if col == 1 or col == row:
        return 1
    else:
        return pascal(row - 1, col) + pascal(row - 1, col - 1)

上述递归实现在时间复杂度方面呈指数增长。有了动态规划的知识,我们怎么写一个函数fast_pascal(row, col)? 该函数应该接受一个整数行和一个整数 col 并返回 (row, col) 中的值。注意:row 和 col 从 1 开始。

这是我试过的,

def fast_pascal(row,col):
dynamic = [[1]+[1]*(col-1)for i in range(row)]
for row_ind in range(1,row):
    for col_ind in range(1,col):
        dynamic[row_ind][col_ind] = dynamic[row_ind-1][col_ind] + dynamic[row_ind-1][col_ind-1]
return dynamic[row-1][col-1]

代码给出了错误的结果。应该是,

fast_pascal(3,2) == 2
fast_pascal(4,3) == 3
fast_pascal(500,3) == 124251

【问题讨论】:

  • 请具体说明您的问题
  • 你的问题是什么?你收到错误信息吗?代码给出了错误的结果?

标签: python dynamic dynamic-programming pascals-triangle


【解决方案1】:
def fast_pascal(row,col):
    dynamic = [[1]+[0]*(col-1)for i in range(row)]
    for row_ind in range(1,row):
        for col_ind in range(1,col):
            dynamic[row_ind][col_ind] = dynamic[row_ind-1][col_ind] + dynamic[row_ind-1][col_ind-1]
    return dynamic[row-1][col-1]

【讨论】:

    猜你喜欢
    • 2012-10-24
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多