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

走方格的方案数

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

用递归解决,动态规划还没学会😂
首先找出递归方程,可以画图理解,如图1,要想到达终点0,有两条路线,分别是A,B,
所以可以得到f(n,m)=f(A)+f(B)=f(n,m-1)+f(n-1,m).
然后需要找出出口条件,递归方程计算到最后,肯定会有f(A)=f(n,1),f(B)=f(1,m),所以要
找出n=1和m=1时的值,通过图2发现,m=1时f(n,1)=n+1,同理n=1时,f(1,m)=m+1
def func(n,m):
    if n==1:
        return m+1
    elif m==1:
        return n+1
    else:
        return func(n-1,m)+func(n,m-1)
while 1:
    try:
        n,m=map(int,input().split())
        print(func(n,m))
    except:
        break
全部评论
这个因为所以关系我一直搞不懂,求教为什么 因为 "想到达终点0,有两条路线,分别是A,B" 所以"f(n,m)=f(A)+f(B)"。 相似的题还有一个上台阶的问题。因为别人答案直接都是 f(n,m)=f(n-1,m)+f(n,m-1)。好像是直接从题中得出的结论。 我直接从题中看不出来 f(n,m) 与f(n-1,m)+f(n,m-1) 有什么关系。 我自己做得话,只能 让n=1 m=1, n=1,m=2, n=2,m=1..... 这样算出结果 然后找规律得出上述关系式。
1 回复 分享
发布于 2022-09-08 20:50 陕西
最终走到终点,要么就是A到终点,要么就是B到终点,就这两种情况
点赞 回复 分享
发布于 2023-03-26 23:43 湖北

相关推荐

评论
18
1
分享

创作者周榜

更多
牛客网
牛客企业服务