06-图2 Saving James Bond - Easy Version (25 分)

This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the world's most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake filled with crocodiles. There he performed the most daring action to escape -- he jumped onto the head of the nearest crocodile! Before the animal realized what was happening, James jumped again onto the next big head... Finally he reached the bank before the last crocodile could bite him (actually the stunt man was caught by the big mouth and barely escaped with his extra thick boot).

Assume that the lake is a 100 by 100 square one. Assume that the center of the lake is at (0,0) and the northeast corner at (50,50). The central island is a disk centered at (0,0) with the diameter of 15. A number of crocodiles are in the lake at various positions. Given the coordinates of each crocodile and the distance that James could jump, you must tell him whether or not he can escape.

Input Specification:

Each input file contains one test case. Each case starts with a line containing two positive integers N (≤100), the number of crocodiles, and D, the maximum distance that James could jump. Then N lines follow, each containing the (x,y) location of a crocodile. Note that no two crocodiles are staying at the same position.

Output Specification:

For each test case, print in a line "Yes" if James can escape, or "No" if not.

Sample Input 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

Sample Output 1:

Yes

Sample Input 2:

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

Sample Output 2:

No

程序总体框架:

DFS算法

int DFS ( Vertex V )
{ visited[V] = true;
if ( IsSafe(V) ) answer = YES;
else {
for ( V 的每个邻接点 W )
if ( !visited[W] ) {
answer = DFS(W);
if (answer==YES) break;
}
}
return answer;

代码:

#include<cstdio>
#include<cmath>
using namespace std;
struct node{
int x,y;
}G[];
int n,d;
int vis[];
int ans=;
bool firstJump(int i){
int p1=pow(G[i].x,);
int p2=pow(G[i].y,);
int r=(d+7.5)*(d+7.5);
if(p1+p2<=r)return true;
return false;
}
bool jump(int v,int i){
int p1=pow(G[v].x-G[i].x,);
int p2=pow(G[v].y-G[i].y,);
if(p1+p2<=d*d)return true;
else return false;
}
bool isSave(int v){
if(G[v].x+<=d||-G[v].x<=d||+G[v].y<=d||-G[v].y<=d)return true;
return false;
}
//dfs 1.遍历所有结点,找到能够跳转的结点进行dfs 2.如果结点可以跳上岸,返回结果1.
int dfs(int v){
vis[v]=;
if(isSave(v))return ;
for(int i=;i<n;i++){
if(!vis[i]&&jump(v,i)){
ans=dfs(i);
if(ans) break;//如果换成了if(!ans)return ans; sample 2出现错误。因为循环并没有结束,不能用return
}
}
return ans;
} int main(){
scanf("%d %d",&n,&d);
getchar();
for(int i=;i<n;i++){
scanf("%d %d",&G[i].x,&G[i].y); //struct结构存储x,y坐标
getchar();
}
for(int i=;i<n;i++){
if(firstJump(i)&&!vis[i]){ //首先判断第一步能否跳出,同时没有遍历过该结点
ans=dfs(i);
if(ans)break;
}
}
if(ans)printf("Yes");
else printf("No"); return ;
}

Saving James Bond - Easy Version (MOOC)的更多相关文章

  1. 06-图2 Saving James Bond - Easy Version (25 分)

    This time let us consider the situation in the movie "Live and Let Die" in which James Bon ...

  2. 06-图2 Saving James Bond - Easy Version(25 分)

    This time let us consider the situation in the movie "Live and Let Die" in which James Bon ...

  3. 06-图2 Saving James Bond - Easy Version (25 分)

    This time let us consider the situation in the movie "Live and Let Die" in which James Bon ...

  4. Saving James Bond - Easy Version 原创 2017年11月23日 13:07:33

    06-图2 Saving James Bond - Easy Version(25 分) This time let us consider the situation in the movie &q ...

  5. pat05-图2. Saving James Bond - Easy Version (25)

    05-图2. Saving James Bond - Easy Version (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作 ...

  6. PAT Saving James Bond - Easy Version

    Saving James Bond - Easy Version This time let us consider the situation in the movie "Live and ...

  7. 07-图5 Saving James Bond - Hard Version(30 分)

    This time let us consider the situation in the movie "Live and Let Die" in which James Bon ...

  8. 07-图5 Saving James Bond - Hard Version (30 分)

    This time let us consider the situation in the movie "Live and Let Die" in which James Bon ...

  9. 06-图2 Saving James Bond - Easy Version

    题目来源:http://pta.patest.cn/pta/test/18/exam/4/question/625 This time let us consider the situation in ...

随机推荐

  1. 【noip 模拟赛curse,light,maze】 题解

    2018.10.16 总结:考的不好 原因: 1.考的时候没状态,读题读不进去 2.考的时候不仔细,该得分没得到 T1:curse 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到 ...

  2. COSTA Cross-layer Optimization for Sketch-based笔记与感受

    Main Idea 网络测量在sdn中十分重要,使用sketch的方法需要消耗大量硬件资源,占用其他重要功能的资源,无法容纳更多的测量任务.基于sketch的测量方法有两个特性:基于sketch的测量 ...

  3. CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第三件事就是使用 TI-RTOS 创建 一个任务 和 使用 信号量 超时来闪烁 LED灯

    /* * data_process.c * * Created on: 2018年7月5日 * Author: admin */ #include <ti/sysbios/knl/Task.h& ...

  4. 将硬件规定的通信协议用Lua实现(涉及到很多Lua通信的数据转换)

    1:这次处理的是大唐的gps通信协议,先简单介绍一下他规定的通信规则: 信息结构: 传输说明: 信息结构中的各个字节书写时都是以十六进制标识,两位数组成.传输时,SOI和EOI(SOI=7EH,EOI ...

  5. [转载]Linux crontab命令解析

    名称 : crontab crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表.-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权 ...

  6. H5页面手机端禁止缩放的正确方式

    H5页面禁止手机端缩放是个常见问题了 首先说meta方式 <meta content="width=device-width, initial-scale=1.0, maximum-s ...

  7. C++编译器是如何管理类和对象的,类的成员函数和成员变量

    C++中的class从面向对象理论出发,将变量(属性)和函数(方法)集中定义在一起,用于描述现实世界中的类.从计算机的角度,程序依然由数据段(栈区内存)和代码段(代码区内存)构成. #include ...

  8. C++练习 | 创建并倒序输出不带头结点的链表

    #include <iostream> #include <cstdio> #include <stdlib.h> #include <stack> u ...

  9. pt-archiver数据归档

    可以使用percona-toolkit包中的pt-archiver工具来进行历史数据归档 pt-archiver使用的场景: 1.清理线上过期数据. 2.清理过期数据,并把数据归档到本地归档表中,或者 ...

  10. STM32(6)——USART串口的使用

    1. 串口的基本概念 在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换.USART利用 ...