首頁 > 後端開發 > C++ > 主體

使用C++編程,找到停靠站的數量

WBOY
發布: 2023-09-20 15:13:01
轉載
1283 人瀏覽過

X 點和 Y 點之間有 n 個中間火車站。計算可以安排火車在 s 個車站停靠的不同方式的數量,使得沒有兩個車站彼此相鄰。因此,在本文中,我們將解釋各種可能的方法來找出停靠站的數量。看看這個問題,我們可以發現我們需要找到可以讓火車在 s 個站點停靠的組合。

解決問題的方法

讓我們舉個例子:有八個中間站,我們需要找到讓火車在三個中間站停下來的方法。

n = 8, s = 3
登入後複製

我們還有(n - s) 個車站,也就是火車無法停靠的五個車站,

使用C++編程,找到停靠站的數量

我們有五個車站A、B 、C、D、E,火車不能停靠。現在我們有六個點來安排三個停靠站,使得沒有兩個站是連續的。因此,方法的數量是 -

6<sub>c<sub>3</sub></sub>= [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
登入後複製

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;
}
登入後複製

輸出

Number of ways : 20
登入後複製

上述程式碼的解釋

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

  • 取數字n 中的車站數量和 s 中的停止車站作為輸入。

  • 以 1 初始化 flag1 和 flag 2 變量,並將 s 的值儲存在 temp 中變數。

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

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

  • 列印結果。

結論

在此在這篇文章中,我們解決了一個問題,找出火車可以在中間站停靠的方式數量,使得沒有兩個站是連續的。我們也學習了解決這個問題的C 程式以及解決這個問題的完整方法。我們可以用其他語言寫相同的程序,例如C、java、python等語言。

以上是使用C++編程,找到停靠站的數量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板