X 지점과 Y 지점 사이에 n개의 중간 기차역이 있습니다. 기차가 s개의 역에 정차하여 두 역이 서로 인접하지 않도록 배열할 수 있는 다양한 방법의 수를 계산하십시오. 따라서 이 글에서는 정류장 수를 알아내는 다양한 방법을 설명하겠습니다. 이 문제를 보면 기차가 s개의 역에 정차할 수 있는 조합을 찾아야 함을 알 수 있습니다.
예를 들어 보겠습니다. 중간 역이 8개 있고 중간 역 3개에서 기차를 멈출 방법을 찾아야 합니다.
n = 8, s = 3
또한 (n - s)개의 역이 있습니다. 즉, 기차가 멈출 수 없는 5개의 역,
기차가 멈출 수 없는 5개의 역 A, B, C, D, E가 있습니다. 이제 두 정거장이 연속되지 않도록 3개의 정거장을 배열할 수 있는 6개의 점이 있습니다. 따라서 경로 수는 -
6<sub>c<sub>3</sub></sub>= [fact(6) - fact(3)] / fact(3) = 6 * 5 * 4 / 3 * 2 * 1 = 20
X 지점과 Y 지점에서 세 정거장을 예약하는 방법은 20가지입니다. 예는 다음과 같습니다.
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의 정차 역을 입력으로 사용합니다.
flag1 및 flag 2 변수를 1로 초기화하고 s 값을 임시 변수에 저장합니다.
분자 [fact(n) -fact(r)]인 flag1을 계산합니다.
분모 [fact(r)]인 flag2를 계산하고
결과를 인쇄하세요.
이 기사에서는 두 역이 연속되지 않도록 기차가 중간 역에 정차할 수 있는 방법의 수를 찾는 문제를 해결했습니다. 우리는 또한 이 문제를 해결하기 위한 C++ 프로그램과 이 문제를 해결하는 완전한 방법을 배웠습니다. C, Java, Python 및 기타 언어와 같은 다른 언어로 동일한 프로그램을 작성할 수 있습니다.
위 내용은 C++ 프로그래밍을 사용하여 정류장 수를 찾아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!