提交时间:2024-11-28 16:21:10
运行 ID: 35193
#include<bits/stdc++.h> using namespace std; #define N 2003 #define mod 998244353 int n; bool s[N]; long long dp[N][N]; int cnt; int main(){ ios::sync_with_stdio(0); cin>>n; char ch; for(int i=1;i<=n;i++){ cin>>ch; s[i]=(ch=='1'); cnt+=(s[i]==0); } for(int i=0;i<=n;i++) dp[0][i]=1; for(int i=1;i<=n;i++){ if(i==1 && s[1]==1){ dp[1][0]=1; continue; } for(int j=0;j<=n;j++){ if(s[i]){ (dp[i][j]+=dp[i-1][j]*(i-j))%=mod; }else{ (dp[i][j]+=dp[i-1][j-1]*(j-1))%=mod; for(int k=0;k<j;k++){ (dp[i][j]+=dp[i-1][k])%=mod; } } } } long long ans=0; for(int i=cnt;i<=n;i++){ (ans+=dp[n][i])%=mod; } cout<<ans<<endl; return 0; }