使用C++查詢停靠站的數量


在X點和Y點之間有n箇中間火車站。計算火車停靠在s個車站的不同方式數量,條件是任何兩個車站都不相鄰。因此,在本文中,我們將解釋找到停靠站數量的每種可能方法。觀察問題,我們可以發現我們需要找到火車可以在s個車站停靠的組合。

解決問題的方法

讓我們舉個例子,假設有八個中間站,我們需要找到火車可以在三個中間站停靠的方式。

n = 8, s = 3

我們有(n - s),即五個車站剩餘,火車不能停靠在那裡。

我們有五個車站A、B、C、D、E,火車不能停靠。現在我們有六個點狀位置來安排三個停靠站,使得任何兩個車站都不相鄰。因此,方法的數量是:

6c3= [fact(6) - fact(3)] / fact(3) = 6 * 5 * 4 / 3 * 2 * 1 = 20

有20種方法可以從X點和Y點安排三個停靠站。這是一個例子:

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

示例

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n = 8, s = 3;
    int flag1 = 1, flag2 = 1, temp = s, ans;
    // selecting 's' positions out of 'n-s+1'
    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;
}

輸出

Number of ways : 20

上述程式碼的解釋

為了理解這段C++程式碼,我們可以將解決方案分解成幾個步驟。

  • 將車站數量輸入為**n**,停靠站數量輸入為s。

  • 用1初始化flag1和flag2變數,並將s的值儲存在一個臨時變數中。

  • 計算flag1,即分子 [fact(n) - fact(r)]。

  • 計算flag2,即分母 [fact(r)]

  • 列印結果。

結論

在本文中,我們解決了一個問題,即找到火車在中間站停靠的方式數量,條件是任何兩個車站都不相鄰。我們還學習了這個問題的C++程式以及我們解決這個問題的完整方法。我們可以使用其他語言(如C、Java、Python和其他語言)編寫相同的程式。

更新於:2021年11月24日

瀏覽量150次

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.