题解 | #走方格的方案数#

走方格的方案数

http://www.nowcoder.com/practice/e2a22f0305eb4f2f9846e7d644dba09b

方法1: 板砖 python
HJ91走方格的方案数(动态规划和递归解法)
Two solving methods:(动态规划和递归)
1.Dynamic programming,build route_array-like Yanghui_triangle,time complexity less than recursion,by observing we can get:a[i][j]=a[i-1][j]+a[i][j-1]
动态规划类似于杨辉三角,第0行和第0列的为1,这样通过矩阵的计算循环,规划出第[i][j]的值为该点左和上两个点的和,即为从[0][0]到[i][j]点的路径总数。
01-01-01-01-01-01.....
01-02-03-04-05-06.....
01-03-06-10-15-21.....
01-04-10-20-35-56.....
01-05-15-35-70-126....
......................

#dynamic programming
def dynamicp(m,n):
    road=[[0 for i in range(n)]]*m      #execute to create zero array
    for i in range(m):road[i][0]=1     #begin--row set to 1
    for j in range(n):road[0][j]=1     #begin--column set to 1
    for i in range(1,m):
        for j in range(1,n):
            road[i][j]=road[i-1][j]+road[i][j-1]
    return road[m-1][n-1]
while 1:
    try:
        s=list(map(int,input().split()))
        print(dynamicp(s[0]+1,s[1]+1))
    except:break

方法2 : 递归

def recursion(m,n):
    if m==0 or n==0:return 1
    else:return recursion(m-1, n)+recursion(m, n-1)
while 1:
    try:
        m,n=map(int,input().split())
        print(recursion(m, n))
    except:break
全部评论

相关推荐

头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务