现将代码发在这里:
c++代码:
#include <iostream>
#include <cstring>
using namespace std;
typedef long long LL;
const int maxn=2005;
const LL mod=998244353;
LL dp[maxn][maxn][5];
int main() {
int n,k;
cin >> n >> k;
memset(dp,0,sizeof(dp));
dp[1][1][0]=1;
dp[1][1][3]=1;
dp[1][2][1]=1;
dp[1][2][2]=1;
for(int i=2;i<=n;i++) {
for(int j=1;j<=(i<<1);j++) {
LL tmp=0;
tmp=dp[i-1][j][0]+dp[i-1][j][1]+dp[i-1][j][2]+dp[i-1][j-1][3];
tmp%=mod;
dp[i][j][0]=tmp;
tmp=dp[i-1][j-1][0]+dp[i-1][j][1]+dp[i-1][j-2][2]+dp[i-1][j-1][3];
tmp%=mod;
dp[i][j][1]=tmp;
tmp=dp[i-1][j-1][0]+dp[i-1][j-2][1]+dp[i-1][j][2]+dp[i-1][j-1][3];
tmp%=mod;
dp[i][j][2]=tmp;
tmp=dp[i-1][j-1][0]+dp[i-1][j][1]+dp[i-1][j][2]+dp[i-1][j][3];
tmp%=mod;
dp[i][j][3]=tmp;
}
}
LL ans=(dp[n][k][0]+dp[n][k][1]+dp[n][k][2]+dp[n][k][3])%mod;
cout << ans << endl;
return 0;
}