找到在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月17日 21:29:24

相关推荐

  • c语言如何截取字符串

    C语言字符串截取的核⼼方法是使用指针和循环,通过确定起始位置和结束位置来提取字符串的部分,并通过 malloc 分配和 free 释放内存来避免缓冲区溢出和内存泄漏等常见错误。同时,灵活运用指针可以提高效率,但需小心处理边界条件。根据实际情况选择最优方案,如直接使用指针和循环或使用 strncpy …

    2025年12月19日
    100
  • Gulc:从头开始建造的C库

    本文开启了一个系列,介绍我正在开发的C99库:Gulc(Generic Utility Library的缩写)。该库主要用于学习和娱乐目的,旨在提供C标准库中安全内存管理和实用功能(如向量和无序映射),以简化C语言编程。未来将持续添加更多功能。 目前,该库包含一个简单的验证系统(类似于断言,但在发行…

    2025年12月18日
    000
  • 制作计划的艺术

    C语言编程挑战与乐趣 学习编程语言并非易事,而我从未涉足C语言。尽管它看起来很有趣,但我决定写一篇博客记录我的学习历程。 您可能好奇我为什么选择C语言?说实话,我从未参与过大型项目开发,所以这将是一次充满挑战的经历,就像所有软件开发项目一样。后续我会持续更新进展。 C语言的魅力 C语言仍然拥有庞大的…

    2025年12月18日
    100
  • C语言从0开始

    C语言学习起步可能略显困难,但掌握正确方法后,您将快速掌握基础并逐步精通。本指南将引导您循序渐进地学习C语言核心概念,从基础知识到高级主题。 目录 C语言基础与数据类型用户输入条件表达式简写switch语句C语言数组嵌套循环C语言函数结构体指针 C语言基础与数据类型 C程序遵循标准结构,并使用多种数…

    2025年12月18日
    000
  • 练习 C:构建一个简单的电话簿应用程序

    学习C语言编程的最佳途径之一就是动手实践。本文将带您逐步完成一个我最近完成的项目:一个简单的电话簿应用程序。此应用演示了C语言中的文件处理和基本数据管理,允许您添加、查看和删除联系人。 代码详解 以下是完整代码: #include #include // 函数声明void addcontact(ch…

    2025年12月18日
    100
  • C ++程序员&#s未定义行为指南

    探索c语言编程的未定义行为:一本详尽指南 本文介绍一本关于C语言编程中未定义行为的电子书,共12章,涵盖了C语言编程中一些最棘手和鲜为人知的方面。本书并非C语言入门教材,而是面向熟悉C语言编程的读者,深入探讨未定义行为的各种情况及其潜在后果。作者Dmitry Sviridkin,编辑Andrey K…

    2025年12月18日
    000
  • c语言函数声明的格式

    C语言函数声明以”返回值类型 函数名(参数列表)”组成,但细节丰富。参数修饰符const可防止参数修改,返回类型可为结构体、指针等。函数指针用于实现回调函数等。函数声明不仅说明函数存在,也定义接口,以进行类型检查并防止错误。 C语言函数声明:那些你可能不知道的细节 很多初学者…

    2025年12月18日
    000
  • c语言函数声明参数类型有哪些?

    理解函数声明中参数类型是撰写高效 C 代码的关键。参数类型标识了函数接受的数据类型,决定了编译器检查和处理函数调用时的行为,还影响内存管理和执行效率。常见的用法包括传递简单数据类型和使用指针修改外部变量。常见的错误包括参数类型不匹配和忘记使用 const 关键字保护常量数据。为了优化性能,请传递数据…

    2025年12月18日
    000
  • c语言函数的声明maxlint

    C语言函数声明包括返回类型、函数名和参数列表。必须注意参数类型、参数名和返回类型,否则会引发错误。参数是值传递,指针参数允许修改外部变量的值,而函数指针指向可动态调用的函数。常见的陷阱包括返回类型错误、不当使用指针参数和函数指针。良好的代码风格对于可维护性至关重要,包括清晰的声明、有意义的命名和详细…

    2025年12月18日
    000
  • c语言函数返回值默认定义类型有哪些

    C语言函数默认返回值类型为int,但如果不显式声明,可能导致溢出、精度损失等错误。因此,养成显式声明返回值类型的习惯至关重要,包括:返回浮点数应声明为float或double返回指针应明确声明指针类型使用malloc动态分配内存后,在调用函数的地方释放内存,避免内存泄漏 C语言函数返回值的隐秘世界:…

    2025年12月18日
    000
  • c语言编程求1到n的倒数

    1到n的倒数总和可以通过循环从1到n的每个数字,计算其倒数并累加来求得。代码:获取用户输入的n值。使用for循环从1到n的每个数字进行迭代。计算每个数字的倒数(1.0 / i)并将其添加到累加器sum中。最后,打印出1到n的倒数总和。 c语言编程求1到n的倒数 计算1到n的倒数总和是一种常见的编程问…

    2025年12月18日
    000
  • c语言新手入门代码

    C语言新手入门代码示例:”Hello, World!”打印消息。求两个整数之和,展示变量、运算符和输入功能。计算圆的面积,使用常量、变量和数学函数。 C语言新手入门代码 对于C语言新手来说,编写入门代码是迈出编程之旅的重要一步。以下是几个常见的入门代码示例,可帮助您踏上C语言…

    2025年12月18日
    100
  • Tabs vs Spaces – Makefiles in C

    硅谷 S3 – 第 6 集 开发人员之间关于制表符与空格的争论围绕着代码中缩进的首选方法。 “选项卡”的拥护者认为,选项卡在缩进方面在语义上是正确的、可定制的并且更易于访问,特别是对于那些有视觉障碍的人来说。他们建议使用制表符进行缩进,使用空格进行对齐。 “空格”的倡导者强调一致性,因为…

    2025年12月18日
    000
  • 制表符与空格 — C 中的 Makefile

    开发人员之间关于制表符与空格的争论围绕着代码中缩进的首选方法。 “制表符”的拥护者认为,制表符在语义上对于缩进来说是正确的、可定制的并且更易于访问,特别是对于那些有视觉障碍的人来说。他们建议使用制表符进行缩进,使用空格进行对齐。 “空格”的倡导者强调一致性,因为空格可以确保代码格式在不同的编辑器和平…

    2025年12月18日
    000
  • C语言文件操作必知必会的疑难解答

    c语言文件操作疑难解答:文件打开失败:检查文件是否存在(无读权限或路径错误);eof判断错误:fseek(fp, 0, seek_set) 后再判断;写入文件失败:检查文件是否以写入模式打开(硬盘空间或权限错误);文件关闭失败:检查fp是否正确打开(刷新流);跨平台文件路径:使用 #define 定…

    2025年12月18日
    000
  • malloc函数的实现原理

    malloc函数的实现原理:寻找合适大小的空闲内存块。分割空闲块为分配块和剩余空闲块(如有必要)。分配管理信息到分配块的头部。更新空闲块链表或数据结构以反映新分配。返回指向分配块起始地址的指针。 malloc函数的实现原理 malloc函数是C语言中用来动态分配内存的函数。它在内存堆中为请求的空间分…

    2025年12月18日
    000
  • c语言怎么编程程序

    C语言编程包含以下关键步骤:安装编译器(如GCC或Visual Studio)。创建源文件(.c)。编写代码(包括函数、变量、控制流和输入/输出)。编译代码(将源文件转换成目标文件)。链接代码(将目标文件链接成可执行文件)。运行程序(执行可执行文件)。 C语言编程入门 如何使用C语言编程? 在C语言…

    2025年12月18日
    000
  • string在c语言中的作用

    string在C语言中表示可变字符数组,用于存储和处理文本字符串,功能包括:字符串存储和管理内置字符串操作函数自动内存分配和释放数据传递和通信输入和输出 string在C语言中的作用 string数据类型在C语言中表示一个可变的字符数组,用于存储文本字符串。它在C语言编程中广泛用于处理字符串操作和文…

    2025年12月18日
    000
  • 小写转大写:C语言编程的有效解决方案

    小写转大写:C语言编程的有效解决方案,需要具体代码示例 在C语言编程中,经常会遇到需要将字符串中的小写字母转换为大写的问题。这在很多应用中都是必不可少的操作,比如在输入密码时要求将小写字母转换为大写字母以增加安全性。因此,掌握如何在C语言中实现小写转大写的操作是非常重要的。 在C语言中,可以通过AS…

    2025年12月17日
    000
  • 如何正确使用C语言中的逻辑或运算符||

    标题: 如何正确使用C语言中的逻辑或运算符|| 在C语言中,逻辑或运算符||是一种常用的逻辑运算符,用于判断条件中的任意一个条件是否成立。正确使用逻辑或运算符可以帮助我们编写更加简洁、有效的代码。下面将详细介绍如何正确使用C语言中的逻辑或运算符||,并提供具体的代码示例。 逻辑或运算符||的基本语法…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信