比赛 寒假集训2 评测结果 AAEEE
题目名称 UNO 最终得分 40
用户昵称 郑霁桓 运行时间 0.675 s
代码语言 C++ 内存使用 26.33 MiB
提交时间 2026-02-25 10:28:43
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,k,s;
long long dp[5][105][105][105];
const long long M=998244353;
int main(){
    freopen("UNO.in","r",stdin);
    freopen("UNO.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>n>>m>>k,s=n+m+k;
    dp[1][0][0][0]=1;
    dp[2][0][0][0]=1;
    dp[3][0][0][0]=1;
    for(int i=1;i<=s;i++){
        for(int a=0;a<=min(n,i);a++){
            for(int b=0;b+a<=i&&b<=m;b++){
                int c=i-a-b;
                if(c>k) continue;
                dp[1][a][b][c]=(dp[2][a][b-1][c]+dp[3][a][b][c-1])%M;
                dp[2][a][b][c]=(dp[1][a-1][b][c]+dp[3][a][b][c-1])%M;
                dp[3][a][b][c]=(dp[2][a][b-1][c]+dp[1][a-1][b][c])%M;
            }
        }
    }
    cout<<(dp[1][n-1][m][k]+dp[2][n][m-1][k]+dp[3][n][m][k-1])%M;
    return 0;
}