leetcode:935. 骑士拨号器(dp)

题目:

在这里插入图片描述

分析:

A【i】【j】表示经过j步到达i位置的总的个数。
转移方程多但是简单。

就是这一步和上一步的关系。

代码:

class Solution {
public:
    int knightDialer(int N) {
    long long A[10][N];
 for(int i=0;i<10;i++) A[i][0]=1;
 for(int i=1;i<N;i++)
 {
  A[0][i]=A[4][i-1]+A[6][i-1];
  
  A[1][i]=A[6][i-1]+A[8][i-1];
  A[2][i]=A[7][i-1]+A[9][i-1];
  A[3][i]=A[4][i-1]+A[8][i-1];
  
  A[4][i]=A[3][i-1]+A[9][i-1]+A[0][i-1];
  A[5][i]=0;
  A[6][i]=A[1][i-1]+A[7][i-1]+A[0][i-1];
  
  A[7][i]=A[2][i-1]+A[6][i-1];
  A[8][i]=A[3][i-1]+A[1][i-1];
  A[9][i]=A[4][i-1]+A[2][i-1];
        for(int ii=0;ii<10;ii++) A[ii][i]=(A[ii][i])%1000000007;
  } 
 long long sum=0;
 for(int i=0;i<10;i++) sum=(sum+A[i][N-1])%1000000007;
 return sum; 
    }
};

结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42721412/article/details/106229815