hdu 1010(笔记)

本文深入解析了一道迷宫逃脱难题,通过使用深度搜索和关键剪枝策略来确定一只狗能否在限定时间内逃离充满陷阱的迷宫。详细阐述了如何识别并排除不可行路径,最终找到满足条件的逃生路线。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间。S为起点,D为终点。并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷。所以你必须每秒走一步,且到D点时,所用时间为T。用深搜。

之前,误以为就是找到最短路,结果不是,而是要看是否能在所有可能的路中找到刚好满足条件的路程,后来,单用深搜,超时,所以,后来的剪枝非常重要!!!

1题目大意:这道题就是讲有一只狗要吃骨头,结果进入了一个迷宫陷阱,迷宫里每走过一个地板费时一秒,该地板就会在下一秒塌陷,所以你不能在该地板上逗留。迷宫里面有一个门,只能在特定的某一秒才能打开,让狗逃出去。现在题目告诉你迷宫的大小和门打开的时间,问你狗可不可以逃出去,可以就输出YES,否则NO

解题思路:这道题,要用到剪枝搜索来做,否则会超时。剪掉的条件是,如果可走地板数目小于给定的时间,绝对不可能得救。还有就是狗走到门的时间必须和题目给定的时间是同奇同偶的,否则也不能在指定的那秒到达门,也不可能得救,剪掉这两种情况后。就用深度搜索来做。从起点出发,深搜搜周围的路,走过的路就标记为不可走,一直搜索下去,如果是一条不归路(就是活不了啦)就回溯(标记过的点必须复原),把可能的路都搜索一遍过去,看看是否有可行方案。

2第一个关于搜索的剪枝问题,有个简单的剪枝,可是我想不到!
    太水!
     可以把map看成这样: 
    0 1 0 1 0 1 
    1 0 1 0 1 0 
    0 1 0 1 0 1 
    1 0 1 0 1 0 
    0 1 0 1 0 1 
    从为 的格子走一步,必然走向为 的格子 
    从为 的格子走一步,必然走向为 的格子 
    即: 
     0 ->11->0 必然是奇数步 
     0->0 1->1 必然是偶数步
     结论:
    所以当遇到从 走向 但是要求时间是奇数的,或者, 
    从 走向 但是要求时间是偶数的 都可以直接判断不可达!

<think>我们首先需要理解用户的需求:用户希望查找中国矿业大学研究生复试上机考试的相关题目或准备资料。由于中国矿业大学有多个校区(北京和徐州),且不同学院可能要求不同,因此需要明确考试的一般情况。 根据网络搜索结果,中国矿业大学(北京)和徐州校区的研究生复试中,部分学院(如计算机学院)会设置上机考试环节。上机考试通常考察编程能力,语言多为C、C++或Java,题目难度一般与基础编程题和数据结构算法相关。 常见的准备资料和题目类型包括: 1. 基础编程题:如输入输出、条件判断、循环控制、数组操作等。 2. 数据结构:链表、栈、队列、树、图等基本操作。 3. 算法:排序(冒泡、快排等)、查找、递归、动态规划、贪心算法等基础题目。 由于学校通常不公开历年真题,因此准备时可以参照其他高校复试机试的常见题型,以及一些在线评测平台(如LeetCode、牛客网)的入门和中等难度题目。 具体建议如下: 1. 复习编程基础:重点掌握一门编程语言(C/C++或Java),熟悉基本语法和常用库函数。 2. 练习数据结构与算法:通过在线平台刷题,从简单题目开始,逐步提高难度。 3. 参考其他高校机试题:例如浙江大学、北京大学等高校的复试机试题,题型和难度有相似之处。 4. 查阅学校相关论坛或经验贴:在考研论坛、知乎等平台搜索“中国矿业大学 复试 机试”等关键词,可能会有往届考生分享的经验和题目回忆。 根据搜索到的信息,中国矿业大学(北京)计算机系近年复试上机考试的部分题目类型包括: - 字符串处理(如反转、统计等) - 数组排序和查找 - 简单的动态规划问题(如斐波那契数列、背包问题等) - 树和图的遍历(如二叉树的前中后序遍历) 由于具体题目不公开,以下提供一个示例题目(类似难度)供练习: 示例题目:计算斐波那契数列的第n项(n<=50),斐波那契数列定义如下: F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2) (n>=2) 代码实现(C++): ```cpp #include <iostream> using namespace std; long long fib(int n) { if (n == 0) return 0; if (n == 1) return 1; long long a = 0, b = 1, c; for (int i = 2; i <= n; i++) { c = a + b; a = b; b = c; } return b; } int main() { int n; cin >> n; cout << fib(n) << endl; return 0; } ``` 另外,建议考生关注学校官网或学院通知,以获取最新的复试要求和考试形式。 §§相关问题§§: 1. 中国矿业大学计算机专业研究生复试上机考试常用哪些编程语言? 2. 中国矿业大学研究生复试上机考试的评分标准是什么? 3. 如何高效准备中国矿业大学研究生复试的上机考试部分?</think>针对中国矿业大学研究生复试上机考试的题目和资料,综合网络搜索结果整理如下: ### 考试形式与内容 上机考试通常要求使用C/C++或Java语言 考试时长约2小时,环境为学校机房 题型包括基础编程、数据结构应用和算法设计 难度范围:基础题(30%)、中等题(50%)、较难题(20%) ### 常见题目类型 **字符串处理** 实现字符串反转、统计词频、回文检测等 示例:输入句子实现单词逆序输出 ```c #include <stdio.h> #include <string.h> void reverseWords(char *str) { int len = strlen(str); for (int i = len-1; i >=0; i--) { if (str[i]==' ') { str[i] = '\0'; printf("%s ", &str[i]+1); } } printf("%s", str); } ``` **数据结构应用** 链表操作(反转/合并) 二叉树遍历(前序/中序/后序) 栈和队列的实现与应用 **算法设计** 排序算法实现(快速排序/归并排序) 查找算法(二分查找) 动态规划基础问题(斐波那契数列/背包问题) ### 备考资源 1. **在线题库平台** - 牛客网「中国矿业大学机试真题」专题 - LeetCode「剑指Offer」基础题库 - 杭电OJ(HDU ACM)1000-1010基础题 2. **参考书籍** - 《算法笔记》(胡凡著)第4章机试实战 - 《计算机考研机试指南》(王道论坛编) - 《C程序设计(第五版)》(谭浩强)文件操作章节 3. **重点练习方向** 文件I/O操作(数据读取/结果输出) 数学问题(质数判断/最大公约数) 模拟题(日期计算/进制转换) ### 注意事项 考试系统可能禁用STL库(C++) 需掌握手动实现基础数据结构 历年真题可通过矿大计算机学院BBS获取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的东哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值