ゲームランクの番号の組み合わせ

 

それは理解の多くは、問題の解決策ではない、制限されています

 

このこんにゃくを見ていただきありがとうございます

 

 

トピック:

トーナメントランキング

(rank.cpp /イン/アウト1S 128M)

Nのクラスメートは、平行な状況をできるように、ランキングのどのように多くの種類を尋ね、競争に参加します

入力

番号を入力して N 、N <= 12であります

出力

どのように多くの種類の出力順位の

サンプル入力

2

サンプル出力

3

ヒント

以下のための2つの学生を設定し、A、B 、次の3つのランキングを

1:第一、Bの第二

2:第二、B

3:A、Bの最初に平行

 

F(i)は表して競技に参加するために目の学生を、並列状況をできるように、ランキングのどのように多くの種類を尋ねました

 

 

結果として、人が持つことができる、最初の少数の人々の下で考えることができ、C(nは、1)* F (n-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\n",a[n]);
24     return 0;
25 }

 

おすすめ

転載: www.cnblogs.com/nlyzl/p/11714042.html
おすすめ