比赛 2024暑假C班集训B 评测结果 ATEEE
题目名称 UNO 最终得分 20
用户昵称 Untitled 运行时间 2.634 s
代码语言 C++ 内存使用 3.40 MiB
提交时间 2024-07-11 10:32:35
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

int const N=110,Mod=998244353;
int n,m,k,idx;
long long res,f[N][N][N][5];

long long dfs(int i,int j,int r,int x){
    if ((x==1 && !i) || (x==2 && !j) || (x==3 && !r)) return 0;
    if (f[i][j][r][x]) return f[i][j][r][x];
    if (x==1) f[i][j][r][x]=(dfs(i-1,j,r,2)+dfs(i-1,j,r,3))%Mod;
    else if (x==2) f[i][j][r][x]=(dfs(i,j-1,r,1)+dfs(i,j-1,r,3))%Mod;
    else f[i][j][r][x]=(dfs(i,j,r-1,1)+dfs(i,j,r-1,2))%Mod;
    return f[i][j][r][x];
}

int main(){
    freopen("UNO.in","r",stdin);
    freopen("UNO.out","w",stdout);
    
    scanf("%d %d %d",&n,&m,&k);
    f[1][0][0][1]=1,f[0][1][0][2]=1,f[0][0][1][3]=1;
    res=(dfs(n,m,k,1)+dfs(n,m,k,2)+dfs(n,m,k,3))%Mod;
    printf("%lld",res);
    
    return 0;
}