当前位置: 首页 > news >正文

机器人走路问题优化解法

public class Test53 {//假设有N个位置,记为1-N,N大于或等于2//开始机器人在M位置上(M为1-N中的一个)//如果机器人来到1位置,那么下一步只能向右来到2位置//如果机器人来到N位置,那么下一步只能向左来到N-1的位置//如果机器人在中间,那么既可以往左也可以往右//规定机器人走K步,最终来到P位置的方法有多少种//给N,M,K,P,返回数量public static int ways2(int N, int M, int K, int P) {if (N < 2 || K < 1 || M < 1 || M > N || P < 1 || P > N) {return 0;}int[][] dp = new int[N+1][K+1];for (int row = 0; row <= N; row++) {for (int col = 0; col <= K; col++) {dp[row][col] = -1;}}return walk(N, M, K, P, dp);}public static int walk(int N, int cur, int rest, int P, int[][] dp) {if (dp[cur][rest] != -1) {return dp[cur][rest];}if (rest == 0) {dp[cur][rest] = cur == P ? 1 : 0;return dp[cur][rest];}if (cur == 1) {dp[cur][rest] = walk(N, 2 ,rest - 1, P, dp);return dp[cur][rest];}if (cur == N) {dp[cur][rest] = walk(N, N - 1, rest - 1, P, dp);return dp[cur][rest];}dp[cur][rest] = walk(N, cur + 1, rest - 1, P, dp) + walk(N, cur - 1, rest - 1, P, dp);return dp[cur][rest];}
}

http://www.mrgr.cn/news/7910.html

相关文章:

  • 字符设备驱动程序 --使用GPIO控制引脚高低电平(点亮LED)
  • 事件监听查看、监听器删除方法
  • TCL提前批一面(安卓系统工程师)
  • 使用css如何获取最后一行的元素?使用css解决双边框问题
  • Win/Linux/Mac 安装Python 3.6
  • 【C++】实现一个定长内存池(Object Pool)
  • 【实战指南】文心快码(Baidu Comate)帮助小白快速实现项目
  • Redis持久化数据和缓存做扩容
  • 22:【stm32】定时器三:输出比较
  • vue-element-admin解决三级目录的KeepAlive缓存问题(详情版)
  • clickhouse MPPDB数据库 实现复杂功能的SQL示例
  • 【Qt笔记】QLabel控件详解
  • 【Leetcode 1832 】 判断句子是否为全字母句 —— 忙忙碌碌哈希表不如一行代码速度快
  • 数学建模之数据分析【九】:数据清理概述
  • Marimo:下一代Python编程环境,颠覆传统Jupyter笔记本,自动化执行所有依赖代码块,告别繁琐手动操作
  • CUDA指南-CUDA简介与开发环境搭建
  • unity AssetBundle 使用_什么是AssetBundle_导入必要的插件_创建AssetBundles_AB包资源下载_大文件下载
  • python在字符串指定位置添加字符至固定长度
  • 初赛笔记1
  • 深入解析HarmonyOS中的媒体查询及其高级用法