C 程序用于解决停靠站数量问题

cserver side programmingprogramming更新于 2024/11/3 4:20:00

问题描述− 一个程序,用于找出火车在 n 个车站中的 r 个车站停靠的方式数量,使得没有两个停靠站是连续的。

问题说明

该程序将计算火车停靠的方式数量,即排列数。在这里,火车将从点 X 行驶到 Y。在这两点之间,有 n 个车站。列车将在 n 个车站中的 r 个车站停靠,条件是列车在 r 个车站停靠时不应在两个连续的车站停靠。

可以使用直接 npr 公式找到此排列。

我们来看几个例子,

输入:n = 16 , r = 6
输出:462

解释 − 使用给定的排列公式可以找到列车在满足条件的 16 个车站中的 6 个车站停靠的方式数量

npr 或 p(n, r) = n! ∕ (n-r)!

算法

输入:车站总数 n 和列车可停靠的车站数 r。
步骤 1:针对 n 和 r 的值计算 p(n,r) = n!/ (n-r)!的值
步骤 2:使用 std 打印方法打印 p(n,r) 的值。

示例

#include<stdio.h>
int main(){
   int n = 16, s = 6;
   printf("Total number of stations = %d
Number of stopping station = %d
", s, n);    int p = s;    int num = 1, dem = 1;    while (p!=1) {       dem*=p;       p--;    }    int t = n-s+1;    while (t!=(n-2*s+1)) {       num *= t;       t--;    }    if ((n-s+1) >= s)       printf("Possible ways = %d", num / dem);    else       printf("no possible ways"); }

输出

Total number of stations = 16
Number of stopping station = 6
Possible ways = 462

相关文章