使用C程序打印n x n的螺旋矩阵,使用O(1)额外空间

给定一个正整数 n,并构造一个 n x n 的螺旋矩阵,仅在顺时针方向上使用 o(1) 额外空间

螺旋矩阵是一个像螺旋一样工作的矩阵,它将开始从圆的原点开始,按顺时针方向旋转。因此,任务是使用从 2 → 4 → 6 → 8 → 10 → 12 → 14 → 1 6→ 18 开始的 O(1) 空间以螺旋形式打印矩阵。

下面是示例螺旋矩阵 –

使用C程序打印n x n的螺旋矩阵,使用O(1)额外空间

示例

Input: 3Output:   9 8 7   2 1 6   3 4 1

登录后复制

解决具有无限空间的代码变得很容易,但这并不像最佳程序那样有效,或者代码在内存和时间上都是有效的。因此,为了保持螺旋顺序,使用了四个循环,每个循环用于矩阵的上、右、下和左角,但是如果我们将矩阵分为两部分,即右上角和左下角,我们可以直接使用这个概念

对于右上半部分,

mat[i][j] = (n-2*x)*(n-2*x)-(i-x)-(j-x)

登录后复制

对于左下半部分,

mat[i][j] = (n-2*x-2)*(n-2*x-2) + (i-x) + (j-x)

登录后复制

注意我们正在编写用于打印 2 的矩阵倍数的程序

算法

int spiralmatrix(int n)STARTSTEP 1: DECLARE i, j, a, b, xSTEP 2: LOOP FOR i = 0 AND i 

示例

#include //For n x n spiral matrixint spiralmatrix(int n){   int i, j, a, b, x; // x stores the layer in which (i, j)th element exist   for ( i = 0; i 

");   }}int main(int argc, char const *argv[]){   int n = 3;   spiralmatrix(n);   return 0;}

登录后复制

输出

如果我们运行上面的程序,那么它将生成以下输出 -

18 16 144 2 126 8 10

登录后复制

以上就是使用C程序打印n x n的螺旋矩阵,使用O(1)额外空间的详细内容,更多请关注【创想鸟】其它相关文章!

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2583446.html

(0)
上一篇 2025年3月6日 14:34:19
下一篇 2025年3月6日 14:34:26

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 打印给定数字的乘法表在C中

    程序描述 打印给定数字的乘法表 算法 接受用户提供的任何需要形成乘法的数字 从 I 的值开始乘以给定数 (=1) 将给定数与 I 的值递增,直到 I 值小于或等于12. 示例 /* Program to print the multipli…

    2025年3月6日
    000
  • Thread 类的属性

    线程被定义为程序的执行路径。每个线程定义一个唯一的控制流。 以下是 Thread 类的属性 – 先生编号 属性与说明 1CurrentContext 获取线程正在执行的当前上下文。 2 CurrentCulture 获取或设置当…

    2025年3月6日
    200
  • 一个数组可以重复分割成具有相等和的子数组的次数

    在C++中,我们有一个vector头文件,可以在运行时更改数组的大小。在本文中,我们将学习数组可以重复分割成具有相等和的子数组的次数的概念。 Let’s take an example to show an array partition …

    2025年3月6日
    200
  • 如何在C/C++中找到int的大小?

    在本节中,我们将了解如何在 C 或 C++ 中获取整数数组的大小? int[] 的大小基本上是计算该数组内元素的数量。为了得到这个,我们可以使用 sizeof() 运算符。如果在 sizeof() 中传递数组名称,那么它将返回该数组占用的内…

    2025年3月6日
    200
  • 有关C编程的有趣事实

    在这里我们将看到一些有关 C 编程的有趣事实。如下所示。 有时某些 switch 语句的 case 标签可以放在 if-else 语句内。 示例 #include main() {   int x = 2, y = 2;   switch(…

    2025年3月6日
    200
  • 检查图中是否存在满足给定条件的长度为3的循环

    检查图表中是否存在满足给定条件的长度为 3 的循环,准备重复遍历每个顶点并查看其相邻顶点。如果一个顶点有两个过于关联的邻居,则存在长度为 3 的环。此条件保证两个邻居之间有一条边,从而形成一个三角形。通过过滤所有顶点及其相邻顶点,我们将识别…

    2025年3月6日
    200
  • 在将给定的二进制数转换为L到R之间的进制后,计算质数的个数

    标题“在 L 和 R 之间转换给定二进制数后的素数计数”是指一个数学问题,涉及将二进制数转换为 L 和 R 之间的基数,然后计算来自 L 和 R 之间的素数的个数。转换。在数学中,素数是大于 1 的整数,只能被 1 和它本身整除。 要将二进…

    2025年3月6日
    200
  • 使用C++将链表中的每个节点替换为其超越者计数

    给定一个链表,我们需要在给定链表中查找大于当前元素右侧的元素。这些元素的计数需要代入当前节点的值。 让我们采用一个包含以下字符的链表,并用其超越者计数替换每个节点 – 4 -> 6 -> 1 -> 4 -&gt…

    2025年3月6日
    200
  • C程序实现校验和

    什么是校验和? 在计算中,校验和是使用算法从较大数据集创建的小尺寸数据,其目的是对较大数据集所做的任何更改都会导致不同的校验和。校验和通常用于验证已传输或存储的数据的完整性,因为数据中的错误或修改可能会导致校验和更改。它们还可以用于验证数据…

    2025年3月6日
    200
  • 在C语言中,嵌套函数

    在一些应用程序中,我们发现有些函数是在另一个函数内部声明的。这有时被称为嵌套函数,但实际上这不是嵌套函数。这被称为词法作用域。在C中,词法作用域无效,因为编译器无法找到内部函数的正确内存位置。 嵌套函数定义无法访问周围块的局部变量。它们只能…

    2025年3月6日
    200

发表回复

登录后才能评论