python独一无二的路

python独一无二的路python 独一无二的路 描述 从前有一只小小的机器人叫小器 小器站在一个 M N 的格子地板的最左上角 很孤单 世界辣么大 它也想去看看 经过不懈的努力它终于可以 只能 向下或者向右移动啦 它有一个宏伟的愿望就是要穿过格子地板到达右下角的砖

大家好,我是讯享网,很高兴认识大家。

python独一无二的路

描述:从前有一只小小的机器人叫小器,小器站在一个M*N的格子地板的最左上角,很孤单,世界辣么大,它也想去看看,经过不懈的努力它终于可以(只能)向下或者向右移动啦,它有一个宏伟的愿望就是要穿过格子地板到达右下角的砖,所以如果小器告诉你M和N,你能不能帮它计算一下这中间可以有多少条独一无二的路径?
在这里插入图片描述
讯享网
递归法(类似于青蛙跳台阶问题):
f(m,n) = f(m-1,n) + f(m,n-1)
初始为f(0,0) = 0 , f(0,1) = 1 , f(1,0) = 1

def function(n,m): if(n==1 or m==1): return 1 elif(n==2 and m==2): return 2 else: return function(n-1,m) + function(n,m-1) n=eval(input("")) m=eval(input("")) num=function(n,m) print(num) 

讯享网

方法二:
也是递归,但没有第一个好

讯享网def way(m, n, i, j): if i == m or j == n: return 0 elif i == m - 1 and j == n - 1: return 1 elif i == m - 1 and j != n - 1: return way(m, n, i, j + 1) elif i != m - 1 and j == n - 1: return way(m, n, i + 1, j) else: return way(m, n, i + 1, j) + way(m, n, i, j + 1) m = int(input()) n = int(input()) print(way(m, n, 0, 0)) 

方法三:

  • 设n行m列,向右要走m-1个格子,向下要走n-1个格子,总共必须走m+n-2个格子
  • 总共的走法是在m+n-2中选出m-1个向右走的格子或是n-1个向下走的格子。选完走下边的格子后剩下的只能是走右边的了。
    在这里插入图片描述
    使用数学公式的方法,调用math库,使用.factorial(x)函数,返回x的阶乘。
in_num1 = int(input(""))-1 in_num2 = int(input(""))-1 import math num1 = math.factorial(in_num1+in_num2 ) num2 = math.factorial(in_num1) num3 = math.factorial(in_num2 ) Num = int(num1//(num2*num3)) print(Num) 
小讯
上一篇 2025-01-05 20:47
下一篇 2025-02-15 12:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/24016.html