C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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){ // factorial function 
   if(n <= 1)
      return 1;
   return n * fact(n-1);
}
int main() {
   int n = 5; // given n
   int answer = 0; // our answer
   answer = fact(n+n); // finding factorial of 2*n
   answer = answer / (fact(n) * fact(n)); // (2*n)! / (n! + n!)
   cout << answer << "\n";
}

出力

252

上記のコードの説明

このコードでは、2 * nからnの組み合わせの式を計算します。これは、ポイントAからBに移動するには、2つの方向で正確に2 * nの操作、つまり1つの方向でnの操作が必要になることがわかっているためです。およびnは他の演算であるため、これらの演算の可能なすべての組み合わせ、つまり(2 * n)!/(n!+ n!)が見つかります。指定されたプログラムの全体的な時間計算量はO(1)です。これは、複雑さが指定されたnに依存しないことを意味します。

結論

この記事では、グリッド内のあるポイントから別のポイントに移動する方法の数を見つけるための問題について説明しました。また、この問題のC ++プログラムと、解決した完全なアプローチについても学びました。同じプログラムを、C、java、python、その他の言語などの他の言語で作成できます。この記事がお役に立てば幸いです。


  1. C++を使用して停止ステーションの数を見つける

    ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります

  2. C ++を使用して、指定されたポイントから可能な四辺形の数を見つけます

    四辺形は、ユークリッド平面幾何学で4つの頂点と4つのエッジを持つポリゴンを形成します。名前4-gonなど。四辺形の他の名前に含まれ、正方形、表示スタイルなどとしても知られています。 この記事では、与えられた点から可能な四辺形の数を見つけるためのアプローチを説明します。この問題では、デカルト平面に提供された4つの点(x、y)を使用して作成できる四辺形の数を調べる必要があります。だからここに与えられた問題の例があります- Input : A( -2, 8 ), B( -2, 0 ), C( 6, -1 ), D( 0, 8 ) Output : 1 Explanation : One quadr