当前位置: 首页 > news >正文

面试算法编程题

面试算法编程题记录

题目 : 羊圈里的狼
题目背景 :
一到了晚上,草原牧民的羊就会被赶进羊圈里。这时,野外的狼群就会打羊羔的主意。为了保护羊羔,牧民需要将羊圈里的狼赶走或杀死。由于来的狼很多,他需要快速甄别哪些狼在羊圈里面,哪些狼在羊圈外面。请写一个程序帮助他。
描述 :
羊圈由n 个连续点组成{ Pi }, 1 <= i <= n; 3 <= n <= 100.其中, P1与Pn首尾相连,形成一个闭合的羊圈。假设狼的位置为(x, y),且保证该点不在墙上,需要判断其在圈里还是圈外。
输入格式
输入第一行,一个正整数 n(3 <= n <= 100)表示圈坐标点的个数。接下来输入n行,每行两个浮点数代表羊圈的坐标点 Pi;
输入多行数据,每行数据两个浮点数(x, y),表示该条狼的位置。
输出格式 :
输出多行数据,每行数据为一个字符串,表示该条狼是否在羊圈里。如果在里面输出True,否则输出 False。


#include <iostream>
#include <vector>struct Point {double x;double y;
};
bool isInsideCircle(const std::vector<Point>& circle, const Point& wolf) {int crossCount = 0;for (int i = 0; i < circle.size(); ++i) {const Point& p1 = circle[i];//先后两个点const Point& p2 = circle[(i + 1) % circle.size()];if ((p1.y > wolf.y) != (p2.y > wolf.y) &&wolf.x < (p2.x - p1.x) * (wolf.y - p1.y) / (p2.y - p1.y) + p1.x) {++crossCount;}}return crossCount % 2 == 1;
}
int main() {int n;std::cin >> n;std::vector<Point> circle(n);for (int i = 0; i < n; ++i) {std::cin >> circle[i].x >> circle[i].y;}int m;std::cin >> m;for (int i = 0; i < m; ++i) {Point wolf;std::cin >> wolf.x >> wolf.y;std::cout << (isInsideCircle(circle, wolf) ? "True" : "False") << std::endl;}return 0;
}
http://www.lryc.cn/news/128144.html

相关文章:

  • JVM——JDK 监控和故障处理工具总结
  • 多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测
  • ZoomIt v7.1
  • E8—Aurora 64/66B ip实现GTX与GTY的40G通信2023-08-12
  • js下载后端返回的文件
  • 计组 | 并行操作
  • rabbitmq容器启动后修改连接密码
  • PHP中的curl详细解析和常见大坑
  • [python] 使用Jieba工具中文分词及文本聚类概念
  • 常见程序搜索关键字转码
  • 细谈商品详情API接口设计
  • Go 1.21新增的内置函数(built-in functions)详解
  • 【云原生,k8s】基于Helm管理Kubernetes应用
  • 字符设备驱动分布注册
  • 在Gazebo中添加悬浮模型后,利用键盘控制其移动方法
  • Java设计模式 (一) 模板方法设计模式
  • PHP在线客服系统推荐
  • (三)行为型模式:3、解释器模式(Interpreter Pattern)(C++示例)
  • Zookeeper 启动闪退
  • jenkins 安装nodejs 14
  • K8S核心组件etcd详解(上)
  • STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA
  • 微服务—远程调用(RestTemplate)
  • Fine tune简介
  • centos nginx配置ipv4和ipv6的地址都可以访问同一个网站
  • 高教杯数学建模2020C题总结
  • Swagger
  • Android 13像Settings一样获取热点和网络共享
  • 操作系统搭建相关知识
  • 【校招VIP】前端校招考点之vue底层特性