zoukankan      html  css  js  c++  java
  • C语言编程练习38:火车出站

    题目描述

    铁路进行列车调度时,常把站台设计成栈式结构的站台,试问:
    设有编号为1到n的n辆列车,顺序开入栈式结构的站台,则可能的出栈序列有多少种?

    输入

    输入包含多组测试数据。每组为一个正整数n(1<=n<=20),表示有n辆列车。

    输出

    输出可能的出栈序列有多少种。

    样例输入 Copy

    4
    3

    样例输出 Copy

    14
    5


    思路:一开始用全排列函数,判断每个序列是否是合法的出栈序列,但是超时了。所以直接卡塔兰数计算公式
          (2*n)! / (n! *(n + 1)!) (其中n>=1)
    但是要优化一下,因为可能溢出,不用int用longlong
    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    
    int main()
    {
       int n;
    
       while(cin >> n)
       {
           long long s=1;
           for(int i=1;i<=n;i++)
           {
               s=s*(n+i)/i;
           }
           cout << s/(n+1) << endl;
       }
        return 0;
    }
    
    
    
    
     
  • 相关阅读:
    C++中逻辑操作符的重载分析
    不要62
    P1052 过河
    P1029 最大公约数和最小公倍数问题
    P1345 [USACO5.4]奶牛的电信Telecowmunication
    Dining
    Dinic
    [Scoi2015]小凸玩矩阵
    12.16
    bzoj 3529
  • 原文地址:https://www.cnblogs.com/FantasticDoubleFish/p/14336667.html
Copyright © 2011-2022 走看看