[程序员代码面试指南]递归和动态规划-机器人达到指定位置方法数(一维DP待做)(DP)
题目描述
一行N个位置1到N,机器人初始位置M,机器人可以往左/右走(只能在位置范围内),规定机器人必须走K步,最终到位置P。输入这四个参数,输出机器人可以走的方法数。
解题思路
DP
方法一:时间复杂度O(NK),空间复杂度O(NK)
方法二:时间复杂度O(NK),空间复杂度O(N)
方法一代码
public class Solution {
	//ans=walk(N,M,K,P);
	public int walk(int N,int cur,int rest,int P) {
			int[][] dp=new int[rest+1][N+1];
			for(int i=1;i<=N;++i) {
				if(i==P) {dp[0][i]=1;}
				else {
					dp[0][i]=0;
				}
			}
			for(int i=1;i<=rest;++i) {
				for(int j=1;j<=N;++j) {
					if(j==1) {
						dp[i][j]=dp[i-1][j+1];
					}
					else if(j==N) {
						dp[i][j]=dp[i-1][j-1];
					}
					else {
						dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];
					}
				}
			}
			return dp[rest][cur];
		}
}
												
											[程序员代码面试指南]递归和动态规划-机器人达到指定位置方法数(一维DP待做)(DP)的更多相关文章
- [程序员代码面试指南]递归和动态规划-数字字符串转换为字母组合的种数(DP)
		
题意 给一个字符串,只由数字组成,若是'1'-'26',则认为可以转换为'a'-'z'对应的字母,问有多少种转换方法. 题解 状态转移很好想,注意dp多开一位,dp[0]为dp[2]的计算做准备.dp ...
 - [程序员代码面试指南]递归和动态规划-最小编辑代价(DP)
		
问题描述 输入 原字符串StrOrg,目标字符串StrTarget,插入.删除.替换的编辑代价ic,dc,rc.输出将原字符串编辑成目标字符串的最小代价. 解题思路 状态表示 dp[i][j]表示把s ...
 - [程序员代码面试指南]递归和动态规划-最长公共子串问题(DP,LCST)
		
问题描述 如题. 例:输入两个字符串 str1="1AB234",str2="1234EF" ,应输出最长公共子串"234". 解题思路 状 ...
 - [程序员代码面试指南]递归和动态规划-换钱的方法数(DP,完全背包)
		
题目描述 给定arr,arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim,求组成aim的方法数. 解题思路 完全背包 和"求换钱的 ...
 - [程序员代码面试指南]递归和动态规划-换钱的最少货币数(DP,完全背包)
		
题目描述 给定arr,arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim,求组成aim的最少货币数. 解题思路 dp[i][j]表示只用第0 ...
 - [程序员代码面试指南]递归和动态规划-排成一条线的纸牌博弈问题(DP)
		
题目 给定一个整型数组arr,代表数值不同的纸牌排成一条线.玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明.请返回最后获 ...
 - 程序员代码面试指南 IT名企算法与数据结构题目最优解
		
原文链接 这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现.针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮 ...
 - 程序员代码面试指南:IT名企算法与数据结构题目最优解
		
第1章栈和队列 1设计一个有getMin功能的栈(士★☆☆☆) 1由两个栈组成的队列(尉★★☆☆) 5如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 8猫狗队列(士★☆☆☆)10用一个栈实现另一 ...
 - [程序员代码面试指南]字符串问题-字符串匹配问题(DP)
		
问题描述 字符串str,模式串exp. 必须保证str中无'.'和'星号'字符,并且exp中'星号'不出现在首位,且无连续两个'星号'.PS星号是字符只是暂时没找到markdown的星号转义字符. ' ...
 
随机推荐
- 【luogu1613】跑路 - 倍增+Floyd
			
题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟 ...
 - linux驱动之定时器的使用
			
被文章摘自一下几位网友.非常感谢他们. http://blog.sina.com.cn/s/blog_57330c3401011cq3.html Linux的内核中定义了一个定时器的结构: #incl ...
 - oracle进行一对多关联查询的时候,获取副表(也就是多条记录的那张表)的最新一条记录进行关联,如何获取多条记录最新一条呢?
			
例如以下场景: 一条新闻对应多条审核记录,用户想知道这条新闻走到哪一步审核了. 使用:select * from (select b.*,(ROW_NUMBER() OVER (PARTITION B ...
 - 从一个小需求感受Redis的独特魅力
			
分享一个简单的小需求应该怎么设计实现以及有关Redis的使用 Redis在实际应用中使用的非常广泛,本篇文章就从一个简单的需求说起,为你讲述一个需求是如何从头到尾开始做的,又是如何一步步完善的. 需求 ...
 - 从零搭建Spring Boot脚手架(7):整合OSS作为文件服务器
			
1. 前言 文件服务器是一个应用必要的组件之一.最早我搞过FTP,然后又用过FastDFS,接私活的时候我用MongoDB也凑合凑合.现如今时代不同了,开始流行起了OSS. Gitee: https: ...
 - 区块链入门到实战(23)之以太坊(Ethereum) – 虚拟机架构
			
以太坊(Ethereum)网络中,定义了一组通用协议用于支持智能合约的运行,其核心便是以太坊(Ethereum)虚拟机. 下图解释了该架构: 开发人员使用Solidity等开发语言开发智能合约 源程序 ...
 - node-sass安装失败解决方法
			
node-sass安装失败,提示如下: gyp verb check python checking for Python executable "python" in the P ...
 - 力扣Leetcode 200. 岛屿数量
			
岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成. 此外,你可以假设该网 ...
 - Android开发之 当前日期String类型转date类型 java代码中实现方法
			
/** * 获取当前时间 * * @return */ public Date getDate(String str) { try { java.text.SimpleDateFormat forma ...
 - Mono嵌入C++
			
http://docs.go-mono.com/index.aspx?link=xhtml%3Adeploy%2Fmono-api-embedding.html https://www.mono-pr ...