找到在C++中至少有一个点在其上方、下方、左方或右方的点的数量

找到在c++中至少有一个点在其上方、下方、左方或右方的点的数量

在这个问题中,我们得到了位于 2D 平面上的 N 个点。我们的任务是找到其上方、下方、左侧或右侧至少有 1 个点的点的数量

我们需要计算所有至少有 1 个点的点1 个满足以下任一条件的点。

其上方的点− 该点将具有相同的 X 坐标,并且 Y 坐标比其当前值大 1。 p>

其下方的点− 该点将具有相同的 X 坐标,且 Y 坐标比其当前值小 1。

其左侧的点− 该点将具有相同的 Y 坐标,并且 X 坐标比其当前值小 1。

立即学习“C++免费学习笔记(深入)”;

该点右侧的点 − 该点将具有相同的Y坐标和X坐标比当前值大1。

让我们举个例子来理解这个问题,

Input : arr[] = {{1, 1}, {1, 0}, {0, 1}, {1, 2}, {2, 1}}Output :1

解决方法

为了解决这个问题,我们需要从平面上取出每个点,并找到其相邻点可以具有的 X 和 Y 坐标的最大值和最小值,以进行有效计数。如果存在任何具有相同 X 坐标且 Y 值在该范围内的坐标。我们将增加点数。我们将计数存储在变量中并返回它。

示例

让我们举个例子来理解问题

#include using namespace std;#define MX 2001#define OFF 1000struct point {   int x, y;};int findPointCount(int n, struct point points[]){   int minX[MX];   int minY[MX];   int maxX[MX] = { 0 };   int maxY[MX] = { 0 };   int xCoor, yCoor;   fill(minX, minX + MX, INT_MAX);   fill(minY, minY + MX, INT_MAX);   for (int i = 0; i < n; i++) {      points[i].x += OFF;      points[i].y += OFF;      xCoor = points[i].x;      yCoor = points[i].y;      minX[yCoor] = min(minX[yCoor], xCoor);      maxX[yCoor] = max(maxX[yCoor], xCoor);      minY[xCoor] = min(minY[xCoor], yCoor);      maxY[xCoor] = max(maxY[xCoor], yCoor);   }   int pointCount = 0;   for (int i = 0; i  minX[yCoor] && xCoor  minY[xCoor] && yCoor < maxY[xCoor])            pointCount++;   }   return pointCount;}int main(){   struct point points[] = {{1, 1}, {1, 0}, {0, 1}, {1, 2}, {2, 1}};   int n = sizeof(points) / sizeof(points[0]);   cout<<"The number of points that have atleast one point above, below, left, right is "<<findPointCount(n, points);}

输出

The number of points that have atleast one point above, below, left, right is 1

以上就是找到在C++中至少有一个点在其上方、下方、左方或右方的点的数量的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:29:11
下一篇 2025年12月11日 09:39:24

相关推荐

  • 如何在C++中管理完整的循环队列事件?

    介绍 circular queue是对线性队列的改进,它被引入来解决线性队列中的内存浪费问题。循环队列使用fifo原则来插入和删除其中的元素。在本教程中,我们将讨论循环队列的操作以及如何管理它。 什么是循环队列? 循环队列是数据结构中的另一种队列,其前端和后端相互连接。它也被称为循环缓冲区。它的操作…

    2025年12月17日
    000
  • 在C语言中编写一个打印镜像空心平行四边形的程序

    程序描述 这是一个四边形,其中两对对边是平行的。 有六个重要的平行四边形属性需要了解 对边相等 (AB = DC)。对角线相等 (D = B)。相邻角互补 (A + D = 180°)。如果一个角是直角,则所有角都是直角。平行四边形的对角线互相平分。平行四边形的每条对角线将其分成两个相等的部分。 算…

    2025年12月17日 好文分享
    000
  • 在C++中,”for”和”while”有不同的用途

    编程中的循环用于多次计算一段代码。在这里,我们将看到程序中两种循环的区别,For循环和While循环。 For循环 For循环是一种重复控制循环,允许用户循环执行给定的代码块特定次数。 语法 for(initisation; condition; update){ …code to b…

    2025年12月17日
    000
  • 在C语言中编写一个打印右箭头和左箭头图案的程序

    程序说明 打印左右箭头图案 算法 接受打印左右箭头图案的行数. Print Upper Part of the Arrow with Stars PatternsPrint Inverted Right Triangle with Stars PatternsPrint Bottom Part of…

    2025年12月17日
    000
  • c语言编程中debug什么意思

    Debug在C编程中指调试,即检查、找到并修复程序中的错误。Debug步骤包括识别问题、调查问题、修复问题和测试修复。C编程中可用的调试工具包括gdb、valgrind、printf和断点。有效的Debug技巧包括分析错误消息、使用调试器、分而治之、查看文档以及耐心和坚持。 Debug在C编程中的含…

    2025年12月17日
    000
  • c语言编程软件推荐

    最佳整体选择:Visual Studio Code,一款跨平台编辑器,具有高级功能。初学者:Code::Blocks,界面友好、提供内置工具。专业开发:CLion,一款商用 IDE,专为 C/C++ 开发设计,提供高级功能。其他推荐:Dev-C++、Eclipse with CDT、JetBrain…

    2025年12月17日
    000
  • c语言编程显示图案怎么做

    在 C 语言中,通过使用循环和字符,可以显示图案。步骤包括:使用循环和 printf() 函数创建行。使用换行符创建新行。嵌套循环以创建更复杂的图案,如三角形。 C 语言编程中显示图案 如何使用 C 语言编程显示图案? 在 C 语言中,可以通过使用字符和换行符来创建简单的图案。 步骤: 立即学习“C…

    2025年12月17日
    000
  • c语言什么时候出的

    问题:C语言诞生于哪一年?回答:C语言诞生于1972年。背景:C语言因20世纪70年代计算机系统发展迅速而诞生,以满足复杂编程需求。演变:1973年出版权威教材,1978年发布ANSI C标准,1989年发布ISO C国际标准,并衍生出C++、C#等版本,但C语言仍广泛应用。 C语言诞生时间: C语…

    2025年12月17日
    000
  • c语言编程是什么专业

    c语言编程是计算机科学与技术专业的核心课程,旨在培养具备计算机系统、软件开发和网络方面的知识和技能的高级技术人才。c语言的特点包括通用性强、效率高、可移植性好和低级性,在计算机科学与技术专业中,c语言编程是学习计算机系统基础、数据结构、算法设计和软件开发的基础。 计算机科学与技术专业 c语言编程是计…

    2025年12月17日
    000
  • c语言编程软件是什么

    C 语言编程软件是用于编写、调试和编译 C 语言程序的软件,它提供友好的界面,集成了代码编辑器、调试器、编译器和 IDE 等功能,常見的 C 語言編程軟件包括 Microsoft Visual Studio Code、Xcode、Eclipse CDT 等,選擇時需考慮作業系統相容性、功能、易用性和…

    2025年12月17日
    000
  • c语言编程软件怎么调中文

    Visual Studio Code、Code::Blocks、Dev-C++、Eclipse IDE 和 Qt Creator 均可切换为中文。步骤如下:Visual Studio Code:修改 “locale.json” 文件中的 “locale&#8221…

    2025年12月17日
    000
  • 揭秘Go语言源码库早期提交之谜:一个C语言演进的彩蛋

    go语言源码库中前四次提交记录,日期远早于go语言诞生,并署名brian kernighan,实则是一个精心设计的“彩蛋”。这些提交以“hello, world”程序为例,巧妙地展现了c语言从早期形式到ansi c标准的演进过程,以此向c语言的根基及其在贝尔实验室的起源致敬,而非go语言本身的初始开…

    2025年12月16日
    000
  • 实现C90环境下的无溢出系统栈

    实现C90环境下的无溢出系统栈 在C语言编程中,栈溢出是一个常见且严重的问题,可能导致程序崩溃或安全漏洞。为了解决这个问题,可以借鉴Go语言的栈管理机制,实现一种动态扩展栈空间的方案。Go语言默认情况下为每个goroutine分配较小的栈空间,并在需要时动态扩展,有效地避免了栈溢出。 一种实现方式是…

    2025年12月15日
    000
  • 实现C语言中防溢出系统栈的策略与GCC Split-Stack解析

    本文探讨了C语言中实现类似Go语言的动态、防溢出系统栈的方法。针对传统C语言栈溢出难题,文章分析了手动检测与扩展栈的复杂性,并重点介绍了GCC编译器提供的Split-Stac++k功能。该功能通过编译器和运行时库的协作,自动管理栈段的动态分配与链接,有效解决了栈溢出问题,并提供了实现原理、使用方法及…

    2025年12月15日
    000
  • 如何在Python中实现C扩展?

    在python中实现c扩展可以通过以下步骤:1.编写c代码,使用python的c api定义模块和函数;2.创建setup.py文件并编译安装模块。c扩展能显著提高性能,但需谨慎处理内存管理、异常处理和线程安全,并在必要时使用。 在Python中实现C扩展是一种高级技巧,能够显著提高程序性能,但也需…

    2025年12月14日
    000
  • c如何调用python脚本

    C调用Python的核心在于Python/C API,通过它可以在C中操控Python对象和函数,实现数据处理和算法优势的结合。调用步骤包括初始化Python解释器、导入模块、获取对象和调用函数。需要注意内存管理、错误处理、类型转换和线程安全等细节,遵循性能优化和最佳实践,以确保高效、健壮的代码。 …

    2025年12月13日
    000
  • PHP怎样处理CoAP协议消息 CoAP协议消息处理技巧分享

    php处理coap协议消息的核心在于理解其结构并利用php的网络编程能力进行解析和生成。1. 首先选择合适的库或自行编写解析逻辑,2. 使用udp socket编程接收和发送coap消息,3. 若有dtls安全需求则需处理加密过程,4. 对于observe机制,服务端需维护订阅列表并在资源变化时通知…

    2025年12月11日 好文分享
    000
  • PHP怎样解析RPM安装包 RPM包信息读取的3个函数

    php解析rpm包可通过三种方法实现:1.使用rpm命令结合exec()函数,通过执行系统命令获取软件名称、版本等信息,但依赖系统环境;2.利用proc_open()函数更灵活控制输入输出,分别读取标准输出和错误信息,增强错误处理能力;3.编写php扩展直接解析rpm格式,虽彻底但复杂度高。注意需防…

    2025年12月10日 好文分享
    000
  • PHP如何获取PCI设备信息 读取PCI设备的4个实用技巧

    php无法直接读取pci设备信息,因其为服务器端脚本语言,需通过调用系统工具实现。1. 在linux中可使用exec(‘lspci’)并解析输出;2. windows下可通过exec(‘wmic’)获取设备信息;3. 可开发c扩展以提高安全性和性能;4…

    2025年12月10日 好文分享
    100
  • C语言编程环境选择指南

    初学c语言编程者常因不知如何选择合适的开发环境而感到困惑。 、 编程软件界面所示 Android 开发者指南 第一部分:入门 Android文档-开发者指南-第一部分:入门-中英文对照版 Android提供了丰富的应用程序框架,它允许您在Java语言环境中构建移动设备的创新应用程序和游戏。在左侧导航…

    2025年12月2日 软件教程
    000

发表回复

登录后才能评论
关注微信