【搞定算法】机器人走路问题

本文探讨了在特定条件下,机器人从M位置出发,经过P步达到K位置的不同走法数量。博主分享了递归和动态规划两种解决方案,并提及其在秋招中拿到多个大厂offer,愿意交流面试经验并提供个人资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java 一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。 

给定四个参数N、P、M、K。表示:
N : 一共有1~N个位置
P : 一共有P步要走
M : 机器人初始停留在M位置上
K : 机器人想要去的位置是K
题目:已知,如果机器人来到 1 位置,那么下一步一定会走到 2 位置。如果机器人来到 N 位置,那么下一步一定会走到 N - 1 位置;如果机器人在中间的位置,那么下一步既可以走向左,也可以走向右。请返回,机器人如果初始停留在 M 位置,经过 P 步之后,机器人来到 K 位置的走法有多少种。

  •  递归实现

public class RobotWork {

    /**
     * @param N :共N个位置
     * @param M :开始位置
     * @param P :可以走的步数
     * @param K : 目标位置
     * @return
     */
    public static int walk(int N, int M, int P, int K){
        if(P == 0){
            // basecase
            return M == K ? 1 : 0;
        }
        // 开始位置和结束位置只能往一个方向走
        if(M == 1){
            return walk(N, M + 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值