当前位置:首页 > 题解目录 > 正文内容

【题解】游览动物园

亿万年的星光4年前 (2022-01-19)题解目录13643

【题目描述】

动物园有很多游览区,小红已经在动物园的一个游览区游览,突然接到电话,要半个小时内到动物园外面跟一个朋友见面。半个小时小红只够游览完当前区域之后,游览一个最近的景区。已知从一个游览区域只能沿着地图(地图的长宽均小于100)中的直线走(上下左右四个方向),请问离小红当前游览区的最近的一个游览区的坐标是多少,如果有多个点离小红的位置都很近,请输出离出口最近的那个点的坐标(不存在多个点距离出口一样近)?

例如:假设小红在孔雀区(3,2),离小红最近的2处游览区分别是猴山(2,0)和虎山(5,3),但猴山离入口更近,因此输出猴山的坐标。

【输入描述】

第一行2个变量,为小红所在的游览区的坐标

第二行一个整数n,为该动物园内游览区的数量(n<=100)

接下来的n行,每行2个数,代表动物园的n个游览区的坐标(本题所有的坐标值都在1~1000的范围内)

【输出描述】

离小红最近的游览区的坐标。

【样例输入】

3 2
5
2 0 
5 3
3 2
5 5
3 8

【样例输出】

2 0

【题目分析】

  1. 题目比较简单,是求给定坐标和求的坐标之间的距离,不过不是两点之间的距离。

  2. 注意题目要求,只能按照直线走。

  3. 可以定义一个结构体,求出给定坐标x的距离和y的距离,然后计算总和,最后排序。

  4. 注意题目挖的坑,小红本身在景区内,如果单纯输出最近距离,肯定是小红当前位置,所以应该输出第二近的位置。

   5. 此题的疑惑,题目中说 “不存在多个点距离出口一样近

    但是。题目中描述,小红所处位置(3,2)距离(2,0)点是1+2=3。

   (3,2)点距离(5,3)点也是2+1=3。那么输出的是(2,0)。猜想此动物园的入口和出口是同一个地方,坐标点是(0,0)

     因此,我们还要把每个坐标加起来,如果距离一样的情况下,则处理此特殊情况

【参考答案】

#include<bits/stdc++.h>
using namespace std;
int x,y,n;
struct node{
	int x,y; //每个点的坐标 
	int s; //每个点与初始坐标的距离
	int e; //每个点与入口的距离 
};
node m[150];
bool cmp(node a,node b){
	if(a.s!=b.s) return a.s<b.s;
	return a.e<b.e;  //特殊情况,如果距离想等,则判断距离入口的距离。 
}
int main(){
	cin>>x>>y>>n; //输出初始坐标和组数 
	for(int i=0;i<n;i++){
		cin>>m[i].x>>m[i].y;
		m[i].s=abs(m[i].x-x)+abs(m[i].y-y);
		m[i].e=abs(m[i].y)+abs(m[i].x);
	}
	sort(m,m+n,cmp); //排序 
	cout<<m[1].x<<' '<<m[1].y;  //输出第二小的。(因为第一小的一定是本身) 
	return 0;
}



扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

家庭作业

题目描述老师在开学第一天就把所有作业都布置了,每个作业如果在规定的时间内交上来的话才有学分。每个作业的截止日期和学分可能是不同的。例如如果一个作业学分为10,要求在6天内交,那么要想拿到这10学分,就...

【题解】建设病房

1.建设病房(build.cpp)【题目描述】2020年1月23日下午,武汉市建设局紧急召集中建三局等单位举行专题会议,要求参照2003年抗击非典期间北京小汤山医院模式,在武汉职工疗养院建设火神山医院...

【算法】最少步数

【算法】最少步数

【题目描述】在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”。有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字。他的同桌平时喜欢下围棋,知...

【题解目录】友好城市

【题解目录】友好城市

【题目描述】Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对友好城市都向政府申请在河...

【题解】感应门

【题目描述】感应门会在有人经过的时候自动打开,冷却d 秒后自动关闭。如果有人在感应门打开的状态下通过,那么冷却时间会重置,重新冷却d秒后再关闭。在一段时间内,有 n个人陆续通过了感应门,他们...

【题解】找零钱—动态规划

给定一些人民币的面额,数量不限,要求找出金额为m元且人民币张数最少的方案。这个问题既可以是一个贪心问题也可以是一个动态规划的问题。对于现行的人民币面额:1、2、5、10、20、50、100,我们找任何...