> 백엔드 개발 > C++ > 본문

使用C++编程,找到停靠站的数量

WBOY
풀어 주다: 2023-09-20 15:13:01
앞으로
1188명이 탐색했습니다.

X 点和 Y 点之间有 n 个中间火车站。计算可以安排火车在 s 个车站停靠的不同方式的数量,使得没有两个车站彼此相邻。因此,在本文中,我们将解释各种可能的方法来找出停靠站的数量。看看这个问题,我们可以发现我们需要找到可以让火车在 s 个站点停靠的组合。

解决问题的方法

让我们举个例子:有八个中间站,我们需要找到让火车在三个中间站停下的方法。

n = 8, s = 3
로그인 후 복사

我们还有 (n - s) 个车站,即火车无法停靠的五个车站,

使用C++编程,找到停靠站的数量

我们有五个车站 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
로그인 후 복사

Example

的中文翻译为:

示例

#include
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 和 flag 2 变量,并将 s 的值存储在 temp 中变量。

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

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

  • 打印结果。

结论

在此在这篇文章中,我们解决了一个问题,找出火车可以在中间站停靠的方式数量,使得没有两个站是连续的。我们还学习了解决这个问题的C++程序以及解决这个问题的完整方法。我们可以用其他语言编写相同的程序,例如C、java、python等语言。

위 내용은 使用C++编程,找到停靠站的数量의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!