动态规划_表格

给定m行n列得网格,有一个机器人从左上角(0,0)出发,每一步可以向下或者向右走,问右多少种不同的方式走到右下角

原题:机器有多少种方式从左上角走到(m-1,n-1)

子问题:
状态:设f[i][j]为机器人有多少种方式从左上角走到(i,j)
f[i][j]=f[i-1][j]+f[i]f[j-1]

初始条件:f[0][0]=1
边界情况:i=0或者j=0,则前一步只能有一个方向过来 f[i][j]=1

计算顺序:
f[0][0]=1
计算第0行:f[0][0],f[0][1],....f[0][n-1]
计算第1行:f[1][0],f[1][1].....f[1][n-1]

计算第m-1行:f[m-1][0],f[m-1][1]......f[m-1][n-1]
时间空间复杂度O(M*N)

def dynamic(row,col):
    f=[[0 for i in range (col)] for j in range(row)]
    for i in range(row):
        for j in range(col):
            #初始化
            if i==0 or j==0:
                f[i][j]=1
            else:
                f[i][j]=f[i-1][j]+f[i][j-1]
    print(f)

dynamic(3,4)

 

posted on 2020-09-28 19:14  happygril3  阅读(508)  评论(0)    收藏  举报

导航