LZY逃命路线总数(记忆化递归)非常难
题目描述
2019年夏天,LZY开开心心的骑着电动车出去玩,结果一不留神,他骑着电动车进入了一只恶犬的领地。恶犬发现它的领地被LZY侵犯了,立马去追LZY,准备咬他一大口。
LZY慌忙逃窜,但是他的电动车电量即将耗尽,现在请你帮忙计算一下,LZY能成功逃脱恶犬领地的路线一共有多少条?
周赛成功AC该题的同学结束后找营长领取红包~~
输入
测试样例由多组测试数据组成。每组测试数据第一行输入5个整数 n , m ( 1 <= n,m <= 50) , t ( 1 <= t <= 50 ), i ( 0 <= i < n ) , j ( 0 <= j < m )
我们把恶犬的领地看做一个二维矩阵,其中 n 和 m代表恶犬的领地范围的行和列
t 代表LZY的电动车最多还能移动多少格 (只能上下左右移动,移动一次 t - 1 ,当 t 为 0 时则LZY不能移动)
i 和 j代表LZY被恶犬发现时的坐标
输出
输出LZY能够逃离恶犬的领地范围的路线总数,只要逃出恶犬领地范围(超出边界)则视为成功逃脱,由于答案很大,所以你需要将你的答案对 1000000007 取模。
样例输入 Copy
2 2 2 0 0
样例输出 Copy
6
提示
1.下图是对样例的解释
2.LZY一旦跑出边界,他是不会再回来了(他也不傻)
3.只要LZY还没跑出边界,他可以重复经过他之前经过的所有网格
- 题意就是求在电瓶车还有电时,有多少种路线能跳出界限
- 需要三维数组,存x,y,剩余电量,二维必错
- 然后记忆化跑一下,难点在于如何优化
- 只要判断如果四个方向都走不出去就提前剪枝掉(概念类似三角形的高)
- 我是被卡在求余上面,不说了,都是泪
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<queue>
#include<math.h>
#include<string.h>
#include<sstream>
using namespace std;
long long dp[55][55][55];
int dir[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};
int n, m, t;
long long dfs(int x, int y, int step){if(x + step < n && x - step >= 0 && y + step < m && y - step >= 0) return 0;if(x < 0 || y < 0 || x > n - 1 || y > m - 1) return 1;if(step == 0) return 0;if(dp[x][y][step] >= 0) return dp[x][y][step] % 1000000007;dp[x][y][step] = 0;for(int i = 0; i < 4; i ++){int tx = x + dir[i][0];int ty = y + dir[i][1];dp[x][y][step] += dfs(tx, ty, step - 1);}return dp[x][y][step] % 1000000007;
}
int main() {ios::sync_with_stdio(false);int x, y;while(cin >> n >> m >> t >> x >> y) {memset(dp,-1,sizeof(dp));cout << dfs(x, y, t) << endl;}return 0;
}
LZY逃命路线总数(记忆化递归)非常难相关推荐
- 蜜蜂爬蜂房(记忆化递归)
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数. 其中,蜂房的结构如下所示. Input 输入数据的第一行是一个整数N,表示测试实例的个数,然后 ...
- 爬楼梯与路径类题目记忆化递归与动态规划双解法(Leetcode题解-Python语言)
70. 爬楼梯(剑指 Offer 10- II. 青蛙跳台阶问题) 递归(英语:Recursion),是指在函数的定义中使用函数自身的方法.有意义的递归通常会把问题分解成规模缩小的同类子问题,当子问题 ...
- [剑指offer][JAVA]面试题第[10-1]题[斐波那契数列][动态规划][记忆化递归]
[问题描述][中等] 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下:F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N ...
- LeetCode 87. 扰乱字符串(记忆化递归 / DP)
文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 动态规划 1. 题目 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树. 下图是字符串 s1 = &q ...
- LeetCode 514. 自由之路(记忆化递归 / DP)
文章目录 1. 题目 2. 解题 1. 题目 电子游戏"辐射4"中,任务"通向自由"要求玩家到达名为"Freedom Trail Ring" ...
- LeetCode 329. 矩阵中的最长递增路径(记忆化递归)
文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 拓扑排序 1. 题目 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向 ...
- LeetCode 337. 打家劫舍 III(记忆化+递归)
文章目录 1. 题目 1.1 相关题目: 2. 解题 2.1 递归 2.2 记忆化递归 1. 题目 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称 ...
- UVA10192 Vacation【LCS+DP+记忆化递归】
You are planning to take some rest and to go out on vacation, but you really don't know which cities ...
- HDU2018 母牛的故事【递推+记忆化递归】
母牛的故事 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- HDU2569 彼岸【打表+记忆化递归】
彼岸 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
最新文章
- LeetCode实战:买卖股票的最佳时机
- Spring MVC配置多个视图解析器(FreeMarker,JSP)
- boost::json模块实现远程过程调用的测试程序
- 扫雷程序设计 python_端口扫描
- Python中NotImplementedError的使用方法(抽象类集成子类实现)
- ASN.1编解码:ORAN-E2AP分析
- c语言控制台不退出程序,怎样可以屏蔽控制台程序的关闭按钮
- poythoncode-实战5--excel 文件读取,文本文件,csv文件,存到系统中以大列表方式进行存储
- Git-第四篇廖雪峰Git教程学习笔记(3)远程仓库,克隆远端库
- Centos7完全卸载MySQL 安装 启动
- Algorithm:数学建模大赛(CUMCM/NPMCM)之CUMCM之2006B之2006之B题《艾滋病疗法的评价及疗效的预测》
- JAVA跑步计时器app_坚持跑步神器app
- 【教学类-20-01】20221203《世界杯16强国旗-随机版》(大班)
- H5前端实现微信分享(处理二次分享问题)
- Ubuntu(linux)系统配置搭建代理服务器
- MTK平台fastboot单烧img文件
- 中国人想在外国卖东西,这些经典网站不能错过
- Git develop分支的一些操作
- SCUT01在线协作白板技术解决方案
- nmap命令检查在线IP与在线IP的开放端口情况
热门文章
- automatic preferred max layout width
- php读取服务器csv文件,PHP进行读取CSV文件数据和生成CSV文件
- 2022年茶艺师(中级)证考试及茶艺师(中级)模拟考试题库
- html将英文日期格式转化为中文日期格式,excel中文日期与英文日期的转换
- ubuntu系统调节电脑亮度
- SQLserver With As 用法
- 海思mpp_sample例子详解
- 上海迪士尼乐园推出全新夜间演出;咖世家在中国推出风味冷萃系列即饮咖啡 | 美通企业日报...
- 如何使用Clonezilla克隆Windows硬盘
- 如何快速分割多个视频,提取每个原音频单独保存