题目:
分析:
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;
}
};