題目鏈接:https://ac.nowcoder.com/acm/problem/204088
dp動態規劃
首先考慮在一條直線上傳播的情況,容易推出:
F[t][n]=F[t-1][n]+F[t-1][n-1]
由於在不同路徑上的傳播情況可以迭加,所以最終結果即爲:
ans=(0,0)到(x,y)路徑數 * F[t][n]
路徑數的dp公式也易推出:
dp[x][y]=dp[x-1][y]+dp[x][y-1]
ac代碼:
#include<bits/stdc++.h>
#define rep(i,n) for(int i=1;i<=n;i++)
#define int long long
#define endl '\n'
using namespace std;
const int mod=998244353;
int n,m,k,x,y,z;
int F[5005][2005];
int F2[2005][2005];
void solve() {
cin>>x>>y>>n;
cout<<F[n][x+y+1]*F2[x+1][y+1]%mod<<endl;
}
#undef int
int main() {
ios::sync_with_stdio(false);
F[0][1]=1;
rep(i,5002) rep(j,2002) {
F[i][j]=(F[i-1][j]+F[i-1][j-1])%mod;
}
F2[0][1]=1;
rep(i,2002) rep(j,2002) {
F2[i][j]=(F2[i-1][j]+F2[i][j-1])%mod;
}
int T;cin>>T;
while(T--) solve();
}