动态规划,每个节点都可以由左边或者右边移动过来。
public static void main(String[] args) {
//走n步,环长为k
int n=8,k=10;
//经过i步到达j点的组合数
int [][]dp = new int[n+1][k];
//经过0步到0点的组合数为1
dp[0][0]=1;
for(int i = 1; i <= n ;i++){
//这里从小到大和从大到小枚举,最终答案不变
for(int j = 0; j < k; j++){
//从左边或者右边到j点
dp[i][j] = dp[i-1][(j+1)%k]+dp[i-1][(j-1+k)%k];
}
}
System.out.println(dp[n][0]);
}
该博客介绍了一种使用动态规划方法解决环形路径计数的问题。代码示例展示了如何计算在走n步后回到起点的组合数,其中环的长度为k。动态规划数组dp用于存储到达各个位置的组合数,通过迭代更新状态,最终得到答案。
2376

被折叠的 条评论
为什么被折叠?



