| 比赛 | 
    CSP2023-S模拟赛 | 
    评测结果 | 
    AAAAAAATATEEEEEEEEEE | 
    | 题目名称 | 
    Maximized Combos | 
    最终得分 | 
    40 | 
    | 用户昵称 | 
    在大街上倒立游泳 | 
    运行时间 | 
    4.001 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    8.41 MiB  | 
    | 提交时间 | 
    2023-10-17 21:31:47 | 
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m;
int f[114];
void dfs(int t,int lian,int xian,int maxx,int yong){
    if(n-t<m-yong) return;
    if(t==n&&yong==m) f[maxx]=(f[maxx]+1)%998244353;
    if(yong<m) dfs(t+1,lian+1,1,max(lian,maxx),yong+1);
    dfs(t+1,0,0,maxx,yong);
}
int main(){
    freopen("combos.in","r",stdin);
    freopen("combos.out","w",stdout);
    cin>>n>>m;
    dfs(0,0,0,0,0);
    for(int i=0;i<m;i++) cout<<f[i]<<endl;
    return 0;   
}
/*给老代码上个坟
#include<bits/stdc++.h>
using namespace std;
int f[102][102][102][3],n,m;
int dfs(int i,int j,int k,bool c){
    if(j>i||k>j||j==-1||k==-1) return 0;
    if(j==i&&c==0) return 0;
    if(i==1) {
        return 1;
    }
    if(f[i][j][k][c]!=-1) return f[i][j][k][c];
    if(c) f[i][j][k][c]=dfs(i-1,j-1,k-1,c);
    else f[i][j][k][c]=dfs(i-1,j-1,k,0)+dfs(i-1,j,k,1)+dfs(i-1,j,k,0);
    //cout<<i<<' '<<j<<' '<<k<<' '<<c<<' '<<f[i][j][k][c]<<endl;
    return f[i][j][k][c];
}
int main(){
    scanf("%d%d",&n,&m);
    memset(f,-1,sizeof(f));
    for(int i=0;i<m;i++) printf("%d\n",dfs(n,m,i,0)+dfs(n,m,i,1));
}*/