使用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

示例

Open Compiler
#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; }

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

输出

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次

开启你的职业生涯

通过完成课程获得认证

开始学习
广告