【发布时间】:2012-02-20 01:19:57
【问题描述】:
对不起各位!我的错!感谢您的提醒,我发现f(0,k)== f(k,0)== 1。这个问题是关于如何计算从网格(0,0)到(m,n)的最短路径数)。
我现在必须解下列方程,找出 f(m,n) 到底等于什么。
1) f(m,n) = 0 : when (m,n) = (0,0)
**2) f(m,n) = 1 : when f(0,k) or f(k,0)**
3) f(m,n) = f(m-1,n) + f(m,n-1) : when else
例如:
1) f(0,0) = 0;
2) f(0,1) = 1; f(2,0) = 1;
3) f(2,1) = f(1,1) + f(2,0) = f(0, 1) + f(1, 0) + f(2, 0) = 1 + 1 + 1 = 3
我记得几年前我在算法课上学过的这种二元递归方程有一个标准的求解方法,但我现在不记得了。
谁能给点提示?或者一个关键字如何找到答案?
【问题讨论】:
-
你的意思是你需要找到不使用递归的公式吗?或者只是一种有效计算递归的算法?
-
你确定 f(2,1)=3 吗?我读到 f(2,1)=f(1,1)+f(2,0)=(f(0,1)+f(1,0))+f(2,0)=(1+1 )+2=2+2=4
-
您正在努力寻找封闭式解决方案吧?
-
@EugenRieck 是的,谢谢!我在这方面犯了一个错误。你的理解是正确的。
-
@svick 是的,我需要减少一个只包含 m 和 n 的方程,没有任何递推公式。这是一道数学题,不是编程题。
标签: algorithm math recurrence