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

世界最新军事新闻最新消息连云港网站seo

世界最新军事新闻最新消息,连云港网站seo,凯里信息网,注册新公司网上怎么核名机器人走路 假设有排成一行的N个位置记为1~N,N一定大于或等于2 开始时机器人在其中的start位置上(start一定是1~N中的一个) 如果机器人来到1位置,那么下一步只能往右来到2位置; 如果机器人来到N位置,那么下一步只能往左来到N-1位…

机器人走路

假设有排成一行的N个位置记为1~N,N一定大于或等于2
开始时机器人在其中的start位置上(start一定是1~N中的一个)
如果机器人来到1位置,那么下一步只能往右来到2位置;
如果机器人来到N位置,那么下一步只能往左来到N-1位置;
如果机器人来到中间位置,那么下一步可以往左走或者往右走;
规定机器人必须走K步,最终能来到aim位置(P也是1~N中的一个)的方法有多少种
给定四个参数 N,start,aim,K 返回能走到的方法数

递归思路

1、当cur在1位置时,只能向2位置移动
2、当cur在N位置时,只能向N-1位置移动
3、当cur在中间位置,可以向cur+1位置移动、也可以向cur-1位置移动
4、如果剩余步数刚好走完时,来到目标位置,返回1,否则返回0

class RobotWalk(object):def ways_a(self, pos, steps, start, target):""":param pos: 总共有pos个位置:param steps: 可以走的步数:param start: 开始位置:param target: 目标位置:return:"""if pos < 2 or steps < 1 or start < 1 or start > pos or target < 1 or target > pos:return 0return self.process_a(pos, start, steps, target)def process_a(self, pos, cur, rest, target):""":param pos: 总共有pos个位置:param cur: 当前来到的位置:param rest: 还剩下的步数:param target: 目标位置:return: 机器人从cur出发,走过rest步之后,最终停留在target的方法数"""# 步数走完时,如果机器人刚好到达目标位置,则返回1if rest == 0:return 1 if cur == target else 0# 如果在1位置,只能向右走 -> cur+1if cur == 1:return self.process_a(pos, cur + 1, rest - 1, target)# 如果在最后一个位置,只能向左 -> cur-1if cur == pos:return self.process_a(pos, cur - 1, rest - 1, target)# 中间位置 既能向左又能向右return self.process_a(pos, cur + 1, rest - 1, target) + self.process_a(pos, cur - 1, rest - 1, target)

动态规划

加缓存

class RobotWalk(object):def ways_b(self, pos, steps, start, target):""":param pos: 总共有pos个位置:param steps: 可以走的步数:param start: 开始位置:param target: 目标位置:return:"""if pos < 2 or steps < 1 or start < 1 or start > pos or target < 1 or target > pos:return 0# 转移条件 剩下的步数 和 当前位置# 当前位置cur 范围 1~pos# 剩余步数rest 范围 0~steps# steps(总步数) 列 pos(总共位置数) 行的数组cache = [[-1] * (steps + 1) for _ in range(pos + 1)]return self.process_b(pos, start, steps, target, cache)def process_b(self, pos, cur, rest, target, cache):"""加缓存减少重复计算:param pos::param cur::param rest::param target::param cache::return:"""# 当前位置没有计算过,则计算后存入缓存,否则直接返回缓存数据if cache[cur][rest] == -1:# 步数走完时,如果机器人刚好到达目标位置,则返回1if rest == 0:index = 1 if cur == target else 0elif cur == 1:index = self.process_b(pos, 2, rest - 1, target, cache)elif cur == pos:index = self.process_b(pos, pos - 1, rest - 1, target, cache)else:index = self.process_b(pos, cur + 1, rest - 1, target, cache) + \self.process_b(pos, cur - 1, rest - 1, target, cache)cache[cur][rest] = indexreturn cache[cur][rest]

假如:
位置数 pos=6
剩余步数steps=5
开始位置start=1
目标位置target=4
cur为当前位置
创建动态表dp 行代表位置数 pos(1,pos), 列代表剩余步数rest(0,steps)
根据递归条件填表:
1、当剩余步数为0时,刚好来到target位置,dp值为1,如果在其他位置,说明未到目标位置,dp值为0
即:dp[cur][rest] = dp[4][0] = 1
2、当cur=1时,只能向2位置移动,都依赖dp[2][rest-1]位置的值
3、当cur=pos时,只能向pos-1位置移动,都依赖dp[pos-1][rest-1]位置的值
4、当1<cur<pos时,既能向cur-1位置移动,也能向cur+1位置移动,都依赖dp[cur-1][rest-1]+dp[cur+1][rest-1]
最终求dp[start][rest] --> dp[1][5] = 4

| cur/rest

位置/剩余步数012345
0xxxxxx
1000104
2001040
30103010
4102060
5010309
6001030

代码实现

class RobotWalk(object):def ways_c(self, pos, steps, start, target):""":param pos: 总共有pos个位置:param steps: 可以走的步数:param start: 开始位置:param target: 目标位置:return:"""if pos < 2 or steps < 1 or start < 1 or start > pos or target < 1 or target > pos:return 0# 当前位置cur 范围 1~pos# 剩余步数rest 范围 0~steps# steps(总步数) 列 pos(总共位置数) 行的数组dp = [[0] * (steps + 1) for _ in range(pos + 1)]# 当剩余0步时,刚好来到target位置 则dp值为1, 其他位置值为0dp[target][0] = 1# 列for col in range(1, steps + 1):# 第一行依赖左下元素dp[1][col] = dp[2][col - 1]# 中间行依赖左下和左上for row in range(1, pos):dp[row][col] = dp[row + 1][col - 1] + dp[row - 1][col - 1]# 最末行依赖左上元素dp[pos][col] = dp[pos - 1][col - 1]return dp[start][steps]
http://www.dinnco.com/news/86828.html

相关文章:

  • 新乡网站建设哪家正规哈尔滨优化网站方法
  • 装饰公司网站php源码免费网站seo排名优化
  • 深圳市工程建设网站购物网站页面设计
  • wordpress 编辑器推荐seo网站优化优化排名
  • 怎么免费申请网站营销推广的形式包括
  • 苏州专业网站建设设计公司哪家好交换友情链接前后必须要注意的几点
  • 网站娱乐一条龙搭建网站优化 推广
  • 做服装招聘的网站有哪些内容合肥做网站推广
  • 石家庄网站建设开发营销推广计划书
  • 在线企业管理培训课程seo网站关键词
  • 外贸导向企业网站推销产品的软文500字
  • 冷库网站建设毕业论文河南seo快速排名
  • 成都网站建设龙兵网络搜索量查询
  • 厦门网站搭建今天实时热搜榜排名
  • 举例常用动态网站开发技术电脑办公软件培训班
  • 北京建站模板系统百度关键词优化软件
  • 深圳专业做网站哪家好流量神器
  • 淘宝网站建设的目标什么长沙百度首页排名
  • 网站建设l临沂西安专业网络推广公司
  • 自动化外包接单平台seo流量是什么
  • 求做政府采购网站网络推广宣传
  • 中小学生做试卷的网站6百度官方
  • 长沙营销型网站开发官方百度下载安装
  • 外贸类网站建设谷歌浏览器 官网下载
  • ordown WordPress独立下载页面搜索关键词排名优化
  • 重庆的汽车网站建设java培训
  • wordpress地址不能修改密码网奇seo赚钱培训
  • 网站做视频窗口接口收费么抖音seo运营模式
  • 会展企业网站建设方案百度搜索指数和资讯指数
  • 网站首页做几个关键词广告推广渠道