有关dp问题的机器人走地图
时间:2022-07-24
本文章向大家介绍有关dp问题的机器人走地图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
今天俺和大佬交流的时候,发现了一个经典问题。就是机器人走方格问题~ 一开始没在意想到了杭电曾做过的一道题类似题当初俺是用打表的好像,回来之后细想这个跟那个好像不太一样~
题意:大概就是一个蜂巢状的图然后小蜜蜂只能向左或者向右,然后从一个小房子到另一个小房子会有多少条路!(因为数据小,所以我选择了打表)
思路:这不就是dp嘛!因为小蜜蜂若想到N,只能从N-1或者N-2 过来,那么我们就要求从小蜜蜂开始运动到N-1和N-2的路径之和。(当初想的竟然是递归找规律,amazing!) 代码如下:
include<bits/stdc++.h>
#define maxn 55
using namespace std;
int main(){
int n;
cin>>n;
long long f[maxn];
f[1] = 1;
f[2] = 2;
for(int i=3;i<=55;i++)
f[i] = f[i-1] + f[i-2];
while(n--){
int A,B;
cin>>A>>B;
cout<<f[B-A]<<endl;
}
return 0;
}
那么我们在来说说机器人这个题吧: 题意:M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。
思路:因为机器人是从(1,1)出发到(n,m),并且机器人也是只能向右或者向下走!
#include<bist/stdc++.h>
#define mod 1000000000+7
#define maxn 1052
using namespace std;
long long dp[maxn][maxn];
int main(){
int n,m;
while(cin>>n>>m){
memset(dp,0,sizeof(dp));
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
if(i == 1 && j == 1)
dp[i][j] = 1;
else
dp[i][j] = (dp[i-1][j]+dp[i][j-1]) % mod
}
}
cout<<dp[n][m]<<endl;
}
return 0;
}
然后俺想: 1.能否用DFS来实现呢?效率会不会比DP高? 2.如果这个路上有的地方有障碍又该怎么来实现呢?! 后续实现!
- 解决WordPress文章密码保护在首页(摘要)不起作用
- WordPress 3.9+的 TinyMCE 4 编辑器增强开发
- Angularjs基础(二)
- Angularjs基础(一)
- iOS 7 Web App的初级优化之道
- Less 常用基础知识
- WooCommerce 结算页面自定义(删除/添加)表单元素
- Waves:类Material Design 的圆形波浪(涟漪)点击特效插件
- 让WooCommerce 中文网关支持PayPal 并自动按汇率进行转换
- Sass 基础(八)
- 在WordPress 的文章或页面中运行PHP 代码
- Sass 基础(七)
- Sass 基础(六)
- Sass 基础(五)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python第二十课——math模块中常用的函数
- python第二十一课——str中的常用函数(重要)
- python第二十二课——list函数
- python第二十三课——dict中的函数
- python第二十四课——set中的函数
- python第二十五课——闭包
- LNMP架构应用实战——PHP扩展及缓存插件安装
- python第二十六课——装饰器
- LNMP架构应用实战——openssl升级最新版本
- python第二十七课——os模块
- python第二十八课——编码小常识
- Linux系统——KVM虚拟机安装与管理
- python第二十九课——文件读写(读取读取中文字符)
- python第二十九课——文件读写(readline()和readlines()的使用)
- linux系统运维企业常见面试题集合(一)