动态规划_表格
给定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) 收藏 举报
浙公网安备 33010602011771号