机器人走路的问题

复制代码
public class Test52 {
    //假设有N个位置,记为1-N,N大于或等于2
    //开始机器人在M位置上(M为1-N中的一个)
    //如果机器人来到1位置,那么下一步只能向右来到2位置
    //如果机器人来到N位置,那么下一步只能向左来到N-1的位置
    //如果机器人在中间,那么既可以往左也可以往右
    //规定机器人走K步,最终来到P位置的方法有多少种
    //给N,M,K,P,返回数量
    
    public static int ways1(int N, int M, int K, int P) {
        if (N < 2 || K < 1 || M < 1 || M > N || P < 1 || P > N) {
            return 0;
        }
        return walk(N, M, K, P);
    }

    public static int walk(int N, int cur, int rest, int P) {
        if (rest == 0) {
            return cur == P ? 1 : 0;
        }
        if (cur == 1) {
            return walk(N, 2 ,rest - 1, P);
        }
        if (cur == N) {
            return walk(N, N - 1, rest - 1, P);
        }
        return walk(N, cur + 1, rest - 1, P) + walk(N, cur - 1, rest - 1, P);
    }
}
相关推荐
致Great1 小时前
Pi 的上下文压缩,到底是怎么工作的?
算法
St_rive2 小时前
Page Object设计模式
java·开发语言·设计模式
watersink2 小时前
机器学习聚类算法
算法·机器学习·聚类
风流 少年2 小时前
Spring AI 2.0:SSE
java·人工智能·spring
凤山老林2 小时前
精细化流量治理:Spring Boot 动态特性开关与灰度发布体系
java·spring boot·后端
luj_17683 小时前
桥牌思维启示:系统设计的模块化架构
c语言·开发语言·c++·经验分享·算法
饼饼学习空间智能4 小时前
家庭服务机器人训练数据怎么积累?仿真、真实采集与持续学习的技术路线分析
人工智能·算法·机器学习
Aphelios3805 小时前
一次锁内网络IO引发的Tomcat线程池“饿死”事故
java·开发语言·spring boot·elasticsearch·tomcat·网络io阻塞·线程池耗尽
不可求~5 小时前
C++ std::string_view 不是字符串:从悬空引用到安全用法
java·开发语言·c++