码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 12034 比赛名次(递推)

时间:2017-04-10 00:19:43      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:技术   http   image   string   分享   cst   for   ace   ini   

https://vjudge.net/problem/UVA-12034

题意:

A、B两人赛马,最终名次有3种可能:并列第一;A第一B第二;B第一A第二。输入n,求n人赛马时最终名次的可能性的个数除以10056的余数。

 

思路:

设答案为f(n),假设第一名有i个人,接下来就会有f(n-i)种可能性,所以答案为技术分享

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<queue>
 6 using namespace std;
 7 
 8 const int maxn=1000+100;
 9 #define mod 10056
10 
11 int c[maxn][maxn];
12 int f[maxn];
13 
14 void init()
15 {
16     for(int i=0;i<maxn;i++)
17     {
18         c[i][0]=1;
19         for(int j=1;j<=i;j++)
20         {
21             c[i][j]=c[i-1][j-1]+c[i-1][j];
22             c[i][j]%=mod;
23         }
24     }
25 }
26 
27 int solve(int n)
28 {
29     if(f[n])  return f[n];
30     for(int i=1;i<=n;i++)
31     {
32         f[n]+=c[n][i]*solve(n-i);
33         f[n]%=mod;
34     }
35     return f[n];
36 }
37 
38 int main()
39 {
40     int T;
41     scanf("%d",&T);
42     init();
43     f[0]=1;
44     for(int kase=1;kase<=T;kase++)
45     {
46         int n;
47         scanf("%d",&n);
48         solve(n);
49         printf("Case %d: %d\n",kase,f[n]);
50     }
51 }

 

UVa 12034 比赛名次(递推)

标签:技术   http   image   string   分享   cst   for   ace   ini   

原文地址:http://www.cnblogs.com/zyb993963526/p/6687109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!