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

C ++のステップ1、2、または3を使用して、n番目の階段に到達する方法を数えます


nである階段の合計ステップ数が与えられます。人は一度に1、2、または3つのステップをスキップすることによって次の階に到達することができます。目標は、そうすることで次の階に到達できる方法の数を見つけることです。

i番目のステップに到達するには、i-1番目のステップ(1ステップをスキップ)、i-2番目のステップ(2ステップをスキップ)、またはi-3番目のステップ(2ステップをスキップ)からジャンプする必要があることを念頭に置いて、再帰的な方法を使用します。 3つの手順をスキップします。

例を挙げて理解しましょう。

入力

N=3 steps

出力

Count of ways to reach the nth stair using step 1, 2 or 3 are: 4

説明

There are total 3 steps
Jump from start ( skip 3 ) : 3 step
Jump from 1’st step (skip 2): 1+2
Jump from 2nd step (skip 1): 2+1
No skip 1+1+1
>

入力

N=6 steps

出力

Count of ways to reach the nth stair using step 1, 2 or 3 are: 24

説明

There are total 6 steps
Ways: 1+1+1+1+1+1, 2+1+1+1+1, 3+1+1+1, 3+1+2, 3+2+1, 3+3 and so on.

以下のプログラムで使用されているアプローチは次のとおりです

  • 総ステップ数として整数ステップを使用しています。

  • 関数stairs_step(int Steps)は、すべてのステップを入力として受け取り、ジャンプするかどうかによって次の階に到達するためのさまざまな方法を返します。

  • このような方法では、初期変数カウントを0とします。

  • 数値が0の場合は、1を返します。

  • ステップ数が1の場合、片道のみ。

  • ステップ数が2の場合、2つの方法(1 + 1または2)のみです。

  • それ以外の場合=stairs_step(step-3)+ stair_step(step-2)+ stair_step(step-1)。

(再帰的方法)

#include <iostream>
using namespace std;
int stairs_step(int steps){
   if(steps == 0){
      return 1;
   }
   else if(steps == 1){
      return 1;
   }
   else if (steps == 2){
      return 2;
   }
   else{
      return stairs_step(steps - 3) + stairs_step(steps - 2) + stairs_step(steps - 1);
   }
}
int main(){
   int steps = 5;
   cout<<"Count of ways to reach the nth stair using step 1, 2 or 3 are: "<<stairs_step(steps);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of ways to reach the nth stair using step 1, 2 or 3 are: 13

  1. C ++を使用してOpenCVのフレームの総数をカウントするにはどうすればよいですか?

    OpenCVでフレームの総数を計算する方法を学びます。 OpenCVを使用すると、ビデオのフレームの総数をカウントして表示するのが基本です。ただし、リアルタイムビデオフレームの総数をカウントできないことに注意する必要があります。リアルタイム動画には特定のフレーム数がないためです。 次のプログラムは、合計フレーム数をカウントし、コンソールウィンドウに表示します。 例 #include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; int main() { &

  2. C++で1xmサイズのタイルを使用してサイズnxmの床をタイル張りする方法の数を数えます

    部屋の床の長さと幅を表す2つの数字nとmが与えられます。目標は、サイズ1Xmのタイルを使用してこの床をタイル張りできる方法の数を数えることです。 例 入力 n=3 m=2 出力 Count the number of ways to tile the floor of size n x m using 1 x m size tiles are: 3 説明 方法は、以下に示すように配置された3つの1x2タイルになります- 入力 n=3 m=3 出力 Count the number of ways to tile the floor of size n x m using 1 x m