比赛 |
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;
}