题目
思路:动态规划
- 走
n步到0的方案数 = 走n-1步到1的方案数 + 走n-1步到9的方案数 dp[i][j]为从0点出发走i步到j点的方案数
- j-1+length是防止j-1=-1
- %length防止j-1+length或者j+1超过数组大小,绕一圈
代码
public int find(int n) {
int length = 10;//
int[][] dp = new int[n + 1][10];//注意是n+1,走2步,走1步。走0步
dp[0][0] = 1;
dp[1][1] = 1;
dp[1][length - 1] = 1;//
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= 9; j++) {
//j-1+length是防止j-1=-1
//%length防止j-1+length或者j+1超过数组大小,绕一圈
dp[i][j] = dp[i - 1][(j - 1 + length) % length] + dp[i - 1][(j + 1) % length];
}
}
return dp[n][0];
}