题目连接:基础实验6-2.3 拯救007 (25分)

在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!(据说当年替身演员被最后一条鳄鱼咬住了脚,幸好穿的是特别加厚的靴子才逃过一劫。)

设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50)。池心岛是以 (0, 0) 为圆心、直径15米的圆。给定池中分布的鳄鱼的坐标、以及007一次能跳跃的最大距离,你需要告诉他是否有可能逃出生天。

输入格式:

首先第一行给出两个正整数:鳄鱼数量 N(≤100)和007一次能跳跃的最大距离 D。随后 N 行,每行给出一条鳄鱼的 (x,y) 坐标。注意:不会有两条鳄鱼待在同一个点上。

输出格式:

如果007有可能逃脱,就在一行中输出"Yes",否则输出"No"。

输入样例 1:

14 20
25 -15
-25 28
8 49
29 15
-35 -2
5 28
27 -29
-8 -28
-20 -35
-25 -20
-13 29
-30 15
-35 40
12 12

输出样例 1:

Yes

输入样例 2:

4 13
-12 12
12 12
-12 -12
12 -12

输出样例 2:

No

题解:

dfs

Node保存坐标,注意第一步需要特殊判断。

之后遍历所有第一跳,开始DFS

每次先判断是否到达边界。

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;const int N = 110;struct Node
{int x, y;
};
Node v[N];int n, d;
bool st[N], flag = false;vector<int> firststep;bool check(int a, int b) {int dx, dy;dx = pow(v[a].x - v[b].x, 2);dy = pow(v[a].y - v[b].y, 2);if (dx + dy <= d * d)return true;return false;
}void DFS(int x) {st[x] = true;if (v[x].x - d <= -50 || v[x].x + d >= 50 || v[x].y - d <= -50 || v[x].y + d >= 50) {flag = true;return;}for (int i = 0; i < n; i++){if (!st[i] && check(x, i))DFS(i);}}int main() {cin >> n >> d;for (int i = 0; i < n; i++) {int a, b;cin >> a >> b;v[i].x = a, v[i].y = b;if (pow(a, 2) + pow(b, 2) <= pow(7.5 + d, 2))firststep.push_back(i);}if (d >= 50) {puts("Yes");return 0;}for (int i = 0; i < firststep.size(); i++)DFS(firststep[i]);if (flag) puts("Yes");else puts("No");return 0;
}

基础实验6-2.3 拯救007 (25分) [浙大版《数据结构学习与实验指导(第2版)》]相关推荐

  1. PTA_拯救007 (25 分)【简单DFS+特判】

    题目链接:7-9 拯救007 (25 分) AC代码: 代码中有注释 #include<iostream> #include<algorithm> #include<cs ...

  2. 【两种解法】基础实验4-2.2 列出叶结点 (25 分)

    立志用最少的代码做最高效的表达 对于给定的二叉树,本题要求你按从上到下.从左到右的顺序输出其所有叶节点. 输入格式: 首先第一行给出一个正整数 N(≤10),为树中结点总数.树中的结点从 0 到 N− ...

  3. 【视频讲解】基础实验4-2.1 树的同构 (25 分)

    立志用最少的代码做最高效的表达 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为我们把其中一棵树 ...

  4. 基础实验 7-2.1 魔法优惠券(25 分)

    在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值 K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的 ...

  5. 进阶实验 2-3.1 海盗分赃(25 分)

    P 个海盗偷了 D 颗钻石后来到公海分赃,一致同意如下分赃策略: 首先,P 个海盗通过抽签决定 1-P 的序号.然后由第 1 号海盗提出一个分配方案(方案应给出每个海盗分得的具体数量),如果能够得到包 ...

  6. 案例6-1.5 旅游规划 (25 分)邻接表实现

    案例6-1.5 旅游规划 (25 分) 用邻接表实现Dijkstra算法 这题一开始做的时候没想到用邻接数组做,所以就用的链表. 总的来说还是Dijkstra算法,只不过是存储方式的问题罢了,我用了四 ...

  7. c语言程序与实验系统,C/C ++程序设计学习与实验软件系统v2019 最新版下载_云间下载...

    C/C ++程序设计学习与实验系统是一款可用于设计教学演示.学习与实验的C/C ++语言编程学习软件,是由从事教学的老师根据C/C ++的初学者及C程序多媒体演示研发.想自学的c语言的朋友不要错过了, ...

  8. 数据结构PTA习题:基础实验4-2.7 修理牧场 (25分)

    基础实验4-2.7 修理牧场 (25分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L​i​​个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L ...

  9. 数据结构PTA习题:基础实验7-2.3 德才论 (25分)——排序

    基础实验7-2.3 德才论 (25分) 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜 ...

最新文章

  1. PagedGeometry 笔记03
  2. 你只写了两行代码,为什么要花两天时间?
  3. 关于导入springboot配置文件相关问题
  4. XR应用场景骤变,一场波及5亿人的新探索开始了
  5. 堆栈指针ESP和EBP
  6. js 正则判断字符串是否为字母或数字
  7. Bugku-CTF之前女友(SKCTF)
  8. android--Activity有返回值的跳转
  9. jzoj3384-理工男【欧拉定理,gcd,数论】
  10. linux之创建大文件
  11. 第二讲:Obj-C 点语法
  12. Java检验yyyymm合法,JAVA日期格式校验正则表达式方法,yyyy年MM月,yyyy-MM-dd格式等...
  13. uchome二次开发
  14. make headers_install 用法
  15. 对话职业经理人阿朱:程序员转型期的职业选择
  16. MySQL 语法整理(2)
  17. web前端程序员职位介绍
  18. 计算机视觉中的数学方法——1平面射影几何——1射影平面+2二次曲线
  19. Windows 免费 HEVC 解码器 下载
  20. 订单23系统服务器,第3节芙拉吉尔 订单No23.系统服务器 死亡搁浅图文攻略 订单流程+设施介绍+道具介绍+界面操作_游侠网...

热门文章

  1. 单片机“花式点灯”实现方法
  2. 京东健康和药明康德入股卫宁软件,分别持有7.7%股权
  3. NORDAC诺德变频器维修SK520E-750-340-A及故障代码
  4. Study-VTK:vtkWidget 分割/配准类之 放置种子点(Qt + vtkSeedWidget)
  5. java学习之javaWeb
  6. 多方面,全访问的剖析Tomcat十大线程和四大通道
  7. 卡兹莫机器人报价_第三次超级机器人大战Z:时狱篇 部分隐藏机体获得条件
  8. 电脑散热,电脑散热不好怎么办?如何解决电脑散热问题
  9. 华为MA5680T 三方兼容 XGSPON
  10. ip代理软件的原理到底是什么?适用场景有哪些?