题目链接:C 1111gal password
题意:长度为n的数字,每一位数字满足1<=x<=9,|x1-x2|<=1,求出有多少个数字
题解:运用数位dp求解
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5,mod = 998244353;
long long dp[maxn][10];
int main()
{
for(int i=1;i<=9;i++)
dp[1][i]=1;
long long n;
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=9;j++)
{
dp[i][j]=(dp[i][j]+dp[i-1][j])%mod;
if(j-1>=1)
dp[i][j]=(dp[i][j]+dp[i-1][j-1])%mod;
if(j+1<=9)
dp[i][j]=(dp[i][j]+dp[i-1][j+1])%mod;
}
}
long long sum=0;
for(int i=1;i<=9;i++)
{
sum+=dp[n][i];
sum=sum%mod;
}
cout<<sum<<endl;
}