1. 程式人生 > >UVA 12034(遞推&遞歸_I題)解題報告

UVA 12034(遞推&遞歸_I題)解題報告

txt ron get con void 技術分享 size 一次 -s

題目鏈接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3185

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

題意:賽馬結果,求有多少種

思路:遞推關系:

dp[i][j]=j*(dp[i-1][j](第i個馬和前面的馬搭夥到達)+dp[i-1][j-1](第i個馬單獨算一次))

代碼:

技術分享圖片
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include
<set> #include<list> #include<deque> #include<map> #include<queue> using namespace std; typedef long long ll; const double PI = acos(-1.0); const double eps = 1e-6; const int MAXN =1e3+10; int ans[MAXN]; int h[MAXN][MAXN]={0}; int T; const int MOD =10056; int horse(){ for
(int i=1;i<MAXN;i++){ h[i][1]=1; for(int j=2;j<=i;j++){ h[i][j]=(h[i-1][j-1]*j%MOD+h[i-1][j]*j%MOD)%MOD; } for(int j=1;j<=i;j++){ ans[i]=(ans[i]+h[i][j])%MOD; } } return 0; } int main(void){ horse(); scanf("%d",&T); //freopen("out.txt","wa",stdout); for(int i=0;i<T;i++){ int a=0; scanf("%d",&a); printf("Case %d: %d\n",i+1,ans[a]); } return 0; }
View Code

UVA 12034(遞推&遞歸_I題)解題報告