DP-牛客寒假集训营3-牛牛的DRB迷宫I

题目:

题意:

求迷宫问题的方案数量。与——求迷宫问题的方案数量。与——求迷宫问题的方案数量。与——DP题型总结中的《摘花生》类似。中的《摘花生》类似。中的《摘花生》类似。

暴搜三个分支指数级别的复杂度必然会T暴搜三个分支指数级别的复杂度必然会T暴搜三个分支指数级别的复杂度必然会T

一、记忆化搜索:一、记忆化搜索:一、记忆化搜索:

每个点只递归一次用数组dp来保存,当再次搜索这个点的时候可以直接返回值无序递归。每个点只递归一次用数组dp来保存,当再次搜索这个点的时候可以直接返回值无序递归。每个点只递归一次用数组dp来保存,当再次搜索这个点的时候可以直接返回值无序递归。

#include<bits/stdc++.h>
using namespace std;
const int MAXN=55;
const long long mod=1e9+7;
int n,m;
char s[MAXN][MAXN];
long long dp[MAXN][MAXN];
long long dp_dfs(int x,int y)
{if(x>n||y>m)return 0;if(dp[x][y]!=-1)return dp[x][y];if(s[x][y]=='D')return dp[x][y]=dp_dfs(x+1,y);if(s[x][y]=='R')return dp[x][y]=dp_dfs(x,y+1);if(s[x][y]=='B')return dp[x][y]=(dp_dfs(x+1,y)+dp_dfs(x,y+1))%mod;
}
int main()
{scanf("%d %d",&n,&m);memset(dp,-1,sizeof(dp));dp[n][m]=1;for(int i=1;i<=n;++i){scanf("%s",s[i]+1);}printf("%lld\n",dp_dfs(1,1));return 0;
}

二、递推写法:二、递推写法:二、递推写法:

按照递归写法写DP:dp[i][j]从(i,j)位置走到(n,m)位置的方案数。则dp[n][m]=1。按照递归写法写DP:dp[i][j]从(i,j)位置走到(n,m)位置的方案数。则dp[n][m]=1。按照递归写法写DP:dp[i][j]从(i,j)位置走到(n,m)位置的方案数。则dp[n][m]=1。

①、mp[i][j]=R:dp[i][j]=dp[i][j+1]①、mp[i][j]=R:dp[i][j]=dp[i][j+1]①、mp[i][j]=R:dp[i][j]=dp[i][j+1]
②、mp[i][j]=D:dp[i][j]=dp[i+1][j]②、mp[i][j]=D:dp[i][j]=dp[i+1][j]②、mp[i][j]=D:dp[i][j]=dp[i+1][j]
③、mp[i][j]=R:dp[i][j]=dp[i+1][j]+dp[i][j+1]③、mp[i][j]=R:dp[i][j]=dp[i+1][j]+dp[i][j+1]③、mp[i][j]=R:dp[i][j]=dp[i+1][j]+dp[i][j+1]

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=1e9+7;
const int maxn=55;
int n,m;
char mp[maxn][maxn];
ll dp[maxn][maxn];int dfs(int x,int y)//暴搜
{if(x<1||y<1||x>m||y>n) return 0;if(x==n&&y==m) return 1;if(mp[x][y]=='R') return dfs(x,y+1)%mod;if(mp[x][y]=='D') return dfs(x+1,y)%mod;if(mp[x][y]=='B') return (dfs(x+1,y)+dfs(x,y+1))%mod;
}int main()
{memset(mp,'!',sizeof(mp));scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>mp[i][j];dp[n][m]=1;int i,j;for(i=n;i>=1;i--)for(j=m;j>=1;j--){if(i==n&&j==m) continue;if(mp[i][j]=='R') dp[i][j]=dp[i][j+1]%mod;if(mp[i][j]=='D') dp[i][j]=dp[i+1][j]%mod;if(mp[i][j]=='B') dp[i][j]=(dp[i+1][j]+dp[i][j+1])%mod;}cout<<dp[1][1]%mod<<endl;return 0;
}

DP\记忆化搜索-牛客寒假集训营3-牛牛的DRB迷宫I相关推荐

  1. (构造+二进制)2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II

    2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II 思路: 一开始我是考虑全部都是B会怎么样,然后删改,结果到后面发现很难推到普遍规律(可能是因为我没看出来). 看了题解之后,觉得这题出的挺有意 ...

  2. 构造-牛客寒假集训营3-牛牛的DRB迷宫II

    构造-牛客寒假集训营3-牛牛的DRB迷宫II 题目: 题意: 输入一个数字,表示从起点(1,1)到终点(n,m)的方案数量,输出满足条件的迷宫.输入一个数字,表示从起点(1,1)到终点(n,m)的方案 ...

  3. 牛客寒假集训营 牛牛战队的比赛地

    题目传送门 我好菜,什么题都看不出算法,到了别人那什么都是板子题T_T 三分板子(强行板子.假装大佬)题: struct node {double x, y; } p[100010]; int n; ...

  4. 牛客国庆集训派对Day2: E. 数据排序(状压DP+记忆化搜索)

    E. 数据排序 题目描述 机器学习通常需要用到大量的人工标注好的数据进行训练.现在有这么一个数据集,有 N 个张照片,每张照片中都有一个模特.某个研究员想要训练一个机器学习算法,能够根据照片对模特的魅 ...

  5. C - Digital Path 计蒜客 - 42397(dp记忆化搜索)

    题目:vj地址 思路:dp[i][j][k]代表 以i,j结尾 有k长度的路径数量,k最大等于4,如果k超过4,也是等于4. 那么转移:dp[i][j][k]+={dp[x][y][k-1]}(x,y ...

  6. 思维dp ---- Codeforces Round #711 (Div. 2) - C. Planar Reflections[dp/记忆化搜索]

    题目链接 题目大意: 就是给你n个平面和一个寿命为k的衰变粒子.开始粒子从左向右飞行,粒子每经过一个平面就会产生一个副本粒子,这个副本粒子比原粒子的寿命少1,即为k-1,并且飞行方向是原粒子的反方向. ...

  7. BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】

    题目 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...

  8. HDU 5001 概率DP || 记忆化搜索

    2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP  測 ...

  9. 数位dp 记忆化搜索java_hdu 5787 数位dp,记忆化搜索

    题意:求区间[l,r]内有多少个数符合,这个数的任意的相邻k位数(digits),这k个数都两两不相等 l,r范围是1~1e18,k是2~5 思路:数位DP,因为K<=5,我们最多需要保存下来当 ...

最新文章

  1. 从源码分析DEARGUI之add_tree_node
  2. php中$GLOBALS
  3. “悟道”公开课第二讲丨如何优化大模型输出结果
  4. 如何掌握java API的方法
  5. 使用Spring Security进行自动登录验证
  6. 【有奖征文】WEB前端大作战,走在技术最前端!
  7. python单引号和什么的作用几乎是一样的_Python中单双多引号的用法与区别
  8. php自动载入类文件函数,我可以在没有PHP的类中自动加载函数文件吗?
  9. 01-老马jQuery教程-jQuery入口函数及选择器
  10. 最新国民经济行业分类sql文件
  11. 创 业 项 目 计 划 书 样 本
  12. 远程桌面无法复制粘贴问题
  13. 【分享】小米MIUI免root一键删除系统内置软件
  14. 好用的PDF解密工具哪个好?
  15. 解决WebStorme点击谷歌浏览器图标无反应问题
  16. 加减法叫做什么运算_加减法是什么意思
  17. 如何改变图片容量大小不影响清晰度
  18. 当类模板遇到了友元函数
  19. window常用自带工具
  20. 张忠谋、蔡明介谈双通并购案,对台湾半导体产业链影响

热门文章

  1. 利用矩阵相乘公式Cij = ∑ a ik × b kj,编程计算m×n阶矩阵A和n×m阶矩阵B之积
  2. 阿斯利康联手多家诊断公司,共建肺癌诊疗生态圈
  3. 第一届嵌入式电子竞赛方案设计——智能门禁系统
  4. 招标 | 近期隐私计算项目招标14(数据资产、运营商、航运)
  5. python turtle库画画
  6. Oracle导入英文日期格式数据出现问题的解决
  7. Linux HugePage
  8. 春暖花开,微信公众号图文排版素材礼包已到!
  9. 软件系统分析与设计 第七节 第八节 制表符
  10. 未来科学技十幻想画计算机,人教版美术教案第七册(全册)