字节跳动面试题:动态规划
题目
一个环有0~9十个点,起点为原点,每步向左或向右一步,问k步返回原点的走法n
解法:动态规划
状态:dp(k,j): 表示从点 j 走 k 步到达原点 0 的方法数
所以是一个二维的动态规划
从第k-1步到第k步有动态转移方程:dp(k, j) = dp(k−1, j−1) + dp(k−1, j+1)
考虑到是环的问题,改成:dp(k, j) = dp(k−1, (j−1+n)%n) + dp(k−1, (j+1)%n)
因此时间复杂度是O(k*n)
考虑到dp(k) 只与dp(k-1)有关 ,所以空间复杂度O(n)就够了
参考链接:(代码也参考此链接)
https://blog.csdn.net/weixin_41888257/article/details/108705557