使用 C++ 找出网格中从一点到另一点的方法数

在这篇文章中,我们给出了一个问题,我们需要找到从 A 点到 B 点的路径总数,其中 A 和 B 是固定点,即 A 是网格中的左上点,B 是底部例如,网格中的正确点 -

Input : N = 5

Output : 252

Input : N = 4

Output : 70

Input : N = 3

Output : 20

在给定的问题中,我们可以通过简单的观察来形式化答案并得到我们的结果。

寻找解决方案的方法

在这种方法中,我们通过观察为给定的问题组成一个公式,即从 A 到 B 穿过网格,我们需要向右行驶 n 次,向下行驶 n 次,这意味着我们需要找出这些路径组合的所有可能性,从而给出了(n+n)和n组合的公式。

示例

#include<bits/stdc++.h>

using namespace std;

int fact(int n){ // 阶乘函数 

   if(n <= 1)

      return 1;

   return n * fact(n-1);

}

int main() {

   int n = 5; // 给定 n

   int answer = 0; // 我们的回答

   answer = fact(n+n); // 找到 2*n 的阶乘

   answer = answer / (fact(n) * fact(n)); //(2*n)!/ (n!+n!)

   cout << answer << "\n";

}

输出结果
252

上面代码的解释

在这段代码中,我们计算了 2*n 到 n 的组合公式,因为我们知道从 A 点到 B 点,我们将需要在两个方向上进行 2*n 次操作,即在一个方向上进行 n 次操作和 n 操作,因此我们找到了这些操作的所有可能组合,即 (2*n)!/ (n! + n!)。给定程序的整体时间复杂度为 O(1),这意味着我们的复杂度不依赖于给定的 n。

结论

在本文中,我们讨论了一个问题,即寻找网格中从一个点到另一个点的方法数量。我们还学习了这个问题的C++程序和我们解决的完整方法。我们可以用其他语言编写相同的程序,例如 C、java、python 和其他语言。我们希望这篇文章对您有所帮助。

以上是 使用 C++ 找出网格中从一点到另一点的方法数 的全部内容, 来源链接: utcz.com/z/362172.html

回到顶部