题目描述
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逃命路线总数(记忆化递归)非常难相关推荐

  1. 蜜蜂爬蜂房(记忆化递归)

    有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数. 其中,蜂房的结构如下所示. Input 输入数据的第一行是一个整数N,表示测试实例的个数,然后 ...

  2. 爬楼梯与路径类题目记忆化递归与动态规划双解法(Leetcode题解-Python语言)

    70. 爬楼梯(剑指 Offer 10- II. 青蛙跳台阶问题) 递归(英语:Recursion),是指在函数的定义中使用函数自身的方法.有意义的递归通常会把问题分解成规模缩小的同类子问题,当子问题 ...

  3. [剑指offer][JAVA]面试题第[10-1]题[斐波那契数列][动态规划][记忆化递归]

    [问题描述][中等] 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下:F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N ...

  4. LeetCode 87. 扰乱字符串(记忆化递归 / DP)

    文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 动态规划 1. 题目 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树. 下图是字符串 s1 = &q ...

  5. LeetCode 514. 自由之路(记忆化递归 / DP)

    文章目录 1. 题目 2. 解题 1. 题目 电子游戏"辐射4"中,任务"通向自由"要求玩家到达名为"Freedom Trail Ring" ...

  6. LeetCode 329. 矩阵中的最长递增路径(记忆化递归)

    文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 拓扑排序 1. 题目 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向 ...

  7. LeetCode 337. 打家劫舍 III(记忆化+递归)

    文章目录 1. 题目 1.1 相关题目: 2. 解题 2.1 递归 2.2 记忆化递归 1. 题目 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称 ...

  8. 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 ...

  9. HDU2018 母牛的故事【递推+记忆化递归】

    母牛的故事 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  10. HDU2569 彼岸【打表+记忆化递归】

    彼岸 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

最新文章

  1. LeetCode实战:买卖股票的最佳时机
  2. Spring MVC配置多个视图解析器(FreeMarker,JSP)
  3. boost::json模块实现远程过程调用的测试程序
  4. 扫雷程序设计 python_端口扫描
  5. Python中NotImplementedError的使用方法(抽象类集成子类实现)
  6. ASN.1编解码:ORAN-E2AP分析
  7. c语言控制台不退出程序,怎样可以屏蔽控制台程序的关闭按钮
  8. poythoncode-实战5--excel 文件读取,文本文件,csv文件,存到系统中以大列表方式进行存储
  9. Git-第四篇廖雪峰Git教程学习笔记(3)远程仓库,克隆远端库
  10. Centos7完全卸载MySQL 安装 启动
  11. Algorithm:数学建模大赛(CUMCM/NPMCM)之CUMCM之2006B之2006之B题《艾滋病疗法的评价及疗效的预测》
  12. JAVA跑步计时器app_坚持跑步神器app
  13. 【教学类-20-01】20221203《世界杯16强国旗-随机版》(大班)
  14. H5前端实现微信分享(处理二次分享问题)
  15. Ubuntu(linux)系统配置搭建代理服务器
  16. MTK平台fastboot单烧img文件
  17. 中国人想在外国卖东西,这些经典网站不能错过
  18. Git develop分支的一些操作
  19. SCUT01在线协作白板技术解决方案
  20. nmap命令检查在线IP与在线IP的开放端口情况

热门文章

  1. automatic preferred max layout width
  2. php读取服务器csv文件,PHP进行读取CSV文件数据和生成CSV文件
  3. 2022年茶艺师(中级)证考试及茶艺师(中级)模拟考试题库
  4. html将英文日期格式转化为中文日期格式,excel中文日期与英文日期的转换
  5. ubuntu系统调节电脑亮度
  6. SQLserver With As 用法
  7. 海思mpp_sample例子详解
  8. 上海迪士尼乐园推出全新夜间演出;咖世家在中国推出风味冷萃系列即饮咖啡 | 美通企业日报...
  9. 如何使用Clonezilla克隆Windows硬盘
  10. 如何快速分割多个视频,提取每个原音频单独保存