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