• 比赛排名 【组合数】


    本人水平有限,题解不到为处,请多多谅解

    本蒟蒻谢谢大家观看

    题目:

    比赛排名

    (rank.cpp/in/out 1s 128M)

    N个同学参加比赛,问有多少种排名情况,允许出现并列的情况

    Input

    输入一个数字NN<=12

    Output

    输出有多少种排名情况

    Sample Input

    2

    Sample Output

    3

    HINT

    设两名同学为A,B,则排名情况有以下三种

    1:A第一名,B第二名

    2:A第二名,B第一名

    3:A,B并列第一名

    f(i)表示i个同学参加比赛,问有多少种排名情况,允许出现并列的情况

    可以考虑下第一名的几个人,可以有一个人,则结果为c(n,1)*f(n-1) 因为已经取走1人

    可以有2个人,则结果为c(n,2)*f(n-2)  因为已经取走2人

    可以有3个人,则结果为c(n,3)*f(n-3)  因为已经取走3人

    ……

    可以有n个人,则结果为c(n,n)*f(0)   取走n人

    ans等于以上情况进行相加

    code:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 long long a[210];
     4 long long C(long long m,long long n)//C (m中取n) 
     5 {
     6     long long ans=1;
     7     for(long long i=1;i<=n;i++)
     8     ans=ans*(m-i+1)/i;
     9     return ans;
    10 }
    11 signed main()
    12 {
    13     long long n,t;
    14     scanf("%lld",&n);
    15     a[1]=a[0]=1;
    16     for(long long k=2;k<=n;k++)
    17     {
    18         for(long long i=1;i<=k;i++)
    19         {
    20             a[k]+=a[k-i]*C(k,i);
    21         }
    22     }
    23     printf("%lld
    ",a[n]);
    24     return 0;
    25 }
  • 相关阅读:
    Azureus 3.0.0.8
    KchmViewer 3.0
    GNOME 2.18.0 正式版颁发宣布
    Emacs 22.0.95
    gTwitter:Twitter 的 Linux 客户端
    KDE DVD Authoring Wizard-易用的 DVD 制造器材
    GIMP 2.3.15
    Monit-零碎看监工具
    Cobras-专注于 Qt 的 IDE
    K3b 1.0 正式版公布
  • 原文地址:https://www.cnblogs.com/nlyzl/p/11714042.html
Copyright © 2020-2023  润新知