2 solutions

  • 1
    @ 2026-5-24 14:17:59

    最简写法:

    #include<bits/stdc++.h>
    using namespace std;
    const int P=998244353;
    const int N=1e6+10;
    int f[N][15];
    int main(){
    int n;
    cin>>n;
    for(int i=1;i<=9;i++)f[1][i]=1;
    for(int i=2;i<=n;i++){
    for(int j=1;j<=9;j++){
    for(int k=max(1,j-1);k<=min(9,j+1);k++){
    f[i][k]+=f[i-1][j];
    f[i][k]%=P;
    }
    }
    }
    int res=0;
    for(int i=1;i<=9;i++){
    res+=f[n][i];
    res%=P;
    }
    cout<<res;
    } 
    
    • -1
      @ 2026-1-26 17:35:29
      #include<bits/stdc++.h>
      using namespace std;
      long long n,dp[1000010][9],mod=998244353,ans;
      int main()
      {
      	cin>>n;
      	for(int i=1;i<=9;i++)
      	{
      		dp[1][i]=1;
      	}
      	for(int i=2;i<=n;i++)
      	{
      		for(int j=1;j<=9;j++)
      		{
      			if(j==1)
      			{
      				dp[i][j]=dp[i-1][j]+dp[i-1][j+1];
      			}
      			else if(j==9)
      			{
      				dp[i][j]=dp[i-1][j]+dp[i-1][j-1];
      			}
      			else
      			{
      				dp[i][j]=dp[i-1][j-1]+dp[i-1][j]+dp[i-1][j+1];
      			}
      			dp[i][j]%=mod;
      		}
      	}
      	for(int i=1;i<=9;i++)
      	{
      		ans=(ans+dp[n][i])%mod;
      	}
      	cout<<ans;
      	return 0;
      }
      
      • 1

      Information

      ID
      2791
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      5
      Tags
      # Submissions
      14
      Accepted
      6
      Uploaded By