ホームページ >バックエンド開発 >C++ >C++ プログラミングを使用して、ストップの数を見つけます。

C++ プログラミングを使用して、ストップの数を見つけます。

WBOY
WBOY転載
2023-09-20 15:13:011301ブラウズ

X 点と Y 点の間には n 個の中間駅があります。 2 つの駅が隣接しないように列車を s 駅に停止するように配置できるさまざまな方法の数を計算します。そこでこの記事では、停車駅の数を調べるさまざまな方法について説明します。この問題を見ると、電車が s 駅に停止できる組み合わせを見つける必要があることがわかります。

問題の解決方法

例を挙げましょう: 8 つの中間駅があり、3 つの中間駅で列車を停止する方法を見つける必要があります。

n = 8, s = 3

また、(n - s) 駅、つまり電車が停止できない駅が 5 つあります。

C++ プログラミングを使用して、ストップの数を見つけます。

駅 A、B が 5 つあります。 、C、D、E、電車は止まらない。これで、2 つのストップが連続しないように 3 つのストップを配置するための 6 つの点ができました。したがって、方法の数は -

6<sub>c<sub>3</sub></sub>= [fact(6) - fact(3)] / fact(3) = 6 * 5 * 4 / 3 * 2 * 1 = 20

になります。X 点と Y 点から 3 つの停留所をスケジュールする方法は 20 通りあります。例の中国語訳は次のとおりです -

Input : n = 15 s = 4
Output : 495
Input : n = 8 s = 3
Output : 20

Example

は次のとおりです:

Example

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n = 8, s = 3;
    int flag1 = 1, flag2 = 1, temp = s, ans;
    // selecting &#39;s&#39; positions out of &#39;n-s+1&#39;
    int x = n - s + 1;
    while (x != (n - 2 * s + 1)) {
       flag1 = flag1 * x;
       x--;
    }
    while (temp != 1) {
       flag2 = flag2 * temp;
       temp--;
    }
    ans = flag1 / flag2;
    if ((n - s + 1) >= s)
       cout << "Number of ways : " << ans;
    else
       cout << "not possible to find";
    return 0;
}

Output

Number of ways : 20

上記のコードの説明

この C コードを理解するには、ソリューションをいくつかのステップに分割します。

  • 番号 n の駅数と s の停車駅を入力として受け取ります。

  • flag1 変数と flag 2 変数を 1 で初期化し、s の値を temp 変数に格納します。

  • 分子 [fact(n) -fact(r)] である flag1 を計算します。

  • 分母である flag2 を計算 [fact(r)]

  • 結果を出力します。

結論

この記事では、2 つの駅が連続しないように列車が中間駅に停止できる方法の数を見つける問題を解決しました。また、この問題を解決するための C プログラムと、この問題を解決するための完全な方法も学びました。同じプログラムを、C、Java、Python などの他の言語で作成できます。

以上がC++ プログラミングを使用して、ストップの数を見つけます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。