Java Program to Form Coils in a Matrix2025年5月8日 | 阅读 7 分钟 在二维网格中创建类似于螺旋或同心环的特定图案称为“在矩阵中形成线圈”。此操作通常需要找到矩阵元素的有序遍历,其中值按顺序和结构化方式分组。为了确保矩阵的每个方面都按正确的顺序访问,线圈通常通过遵循右、下、左、上等方向移动来构建。它们也可以向外扩展或向内压缩。 给定一个正数 n,表示一个 2n x 2n 矩阵 的大小,该矩阵从上到下、从左到右填充,值范围从 1 到 n。我们的任务是在形成矩阵的两个线圈后打印它们。此方法常用于解决数据组织、可视化表示或需要空间模式的模拟问题。 示例 1 输入 int N = 2 输出 线圈 1 是 36 28 20 21 22 30 38 46 54 53 52 51 50 42 34 26 18 10 2 3 4 5 6 7 8 16 24 32 40 48 56 64 线圈 2 是 29 37 45 44 43 35 27 19 11 12 13 14 15 23 31 39 47 55 63 62 61 60 59 58 57 49 41 33 25 17 9 1 解释 对于线圈 1,它从右下角 (64) 开始,逆时针向内旋转。
然后线圈 1 的结果是 36 28 20 21 22 30 38 46 54 53 52 51 50 42 34 26 18 10 2 3 4 5 6 7 8 16 24 32 40 48 56 64。 对于线圈 2,它从左下角 (29) 开始,逆时针向内旋转。
然后线圈 2 的结果是 29 37 45 44 43 35 27 19 11 12 13 14 15 23 31 39 47 55 63 62 61 60 59 58 57 49 41 33 25 17 9 1。 示例 2 输入 int N = 4 输出 线圈 1 是 240 224 208 192 176 160 144 128 112 96 80 64 48 32 16 15 14 13 12 11 10 9 8 24 40 56 72 88 104 120 136 152 168 184 200 216 232 248 264 280 296 312 328 344 360 376 392 408 424 440 456 472 488 504 520 536 552 568 584 600 616 632 648 664 680 696 712 728 744 760 776 792 808 824 840 856 872 888 904 920 936 952 968 984 1000 1016. 线圈 2 是 225 241 257 273 289 305 321 337 353 369 385 401 417 433 449 465 481 497 513 529 545 561 577 593 609 625 641 657 673 689 705 721 737 753 769 785 801 817 833 849 865 881 897 913 929 945 961 977 993 1009 1025 1041 1057 1073 1089 1105 1121 1137 1153 1169 1185 1201 1217 1233 1249 1265 1281 1297 1313 1329 1345 1361 1377 1393 1409 1425 1441 1457 1473 1489 1505 1521. 解释 对于线圈 1,
然后线圈 1 的结果是 240 224 208 192 176 160 144 128 112 96 80 64 48 32 16 15 14 13 12 11 10 9 8 24 40 56 72 88 104 120 136 152 168 184 200 216 232 248 264 280 296 312 328 344 360 376 392 408 424 440 456 472 488 504 520 536 552 568 584 600 616 632 648 664 680 696 712 728 744 760 776 792 808 824 840 856 872 888 904 920 936 952 968 984 1000 1016。 对于线圈 2,
然后线圈 2 的结果是 225 241 257 273 289 305 321 337 353 369 385 401 417 433 449 465 481 497 513 529 545 561 577 593 609 625 641 657 673 689 705 721 737 753 769 785 801 817 833 849 865 881 897 913 929 945 961 977 993 1009 1025 1041 1057 1073 1089 1105 1121 1137 1153 1169 1185 1201 1217 1233 1249 1265 1281 1297 1313 1329 1345 1361 1377 1393 1409 1425 1441 1457 1473 1489 1505 1521。 ![]() 矩阵中总共有 16n2 个元素。每个组件被分成两个线圈。每个线圈包含 8n2 个元素。这是我们创建的数组的大小。线圈一中的元素首先按指定顺序遍历填充。使用公式 coil2[i] = 16*n*n + 1 -coil1[i],在填充了 coil1 的元素后,我们可以获得其他线圈二的元素。 方法:朴素方法对于 4N×4N 网格,长度为 M=8N2 的两个线圈可以通过代码使用迭代和数学技术生成。每次迭代,步长增加 2,并且方向标志决定了第一个线圈 (c1[]) 中值交替递增和递减。翻转一个标志从正到负以反转其方向。使用 c1[] 中元素的数学变换,第二个线圈 (c2[]) 直接计算,无需额外遍历。直接值计算和存储是主要目标,避免了显式的矩阵表示。通过避免显式创建矩阵,该结构保证了有效的遍历和两个线圈在其内的生成。 算法 步骤 1:确定 M = 8 × N2 是总元素数。 步骤 2:设置一个名为 c1[] 的数组来保存线圈 1。 步骤 3:将 c1[0] = 8 × N2 + 2 × N 设置为线圈 1 的第一个元素。 步骤 4:使用 while 循环填充 c1[] 的其余 M−1 个元素。 步骤 5:在每次迭代中,使用一个标志来改变方向并将步长增加 2。 步骤 6:执行以下步骤。 步骤 6.1:垂直方向上添加或删除 4 × N × 标志。 步骤 6.2:水平方向上,使用标志确定是增加还是减少当前值。 步骤 7:为了确保元素被镜像,创建另一个数组 c2[],使得 c2[i]=16×N 2 +1−c1[i]。 步骤 8:通过迭代两个 数组 来逐个打印线圈 1 和线圈 2 的元素。 实施文件名: FormedCoilsMatrix.java 输出 The Coil 1 is: 36 28 20 21 22 30 38 46 54 53 52 51 50 42 34 26 18 10 2 3 4 5 6 7 8 16 24 32 40 48 56 64 The Coil 2 is: 29 37 45 44 43 35 27 19 11 12 13 14 15 23 31 39 47 55 63 62 61 60 59 58 57 49 41 33 25 17 9 1 复杂度分析 上述代码的时间复杂度为 O(N2),空间复杂度也为 O(N2),其中 N 代表给定的整数。 下一主题Java 中的分区数 |
Java 提供了两种创建线程的方法:一种是实现 Runnable 接口,另一种是继承 Thread 类。然而,实现 Runnable 接口的一个重要缺失功能是,线程无法在…时返回某个值。
阅读 4 分钟
Java 中的抽象类是不能直接实例化的类。其目的是作为基类,其他类可以从其继承和扩展。抽象类的一个重要特性是它能够...
阅读 12 分钟
调和数是一个迷人的数学概念,在物理、工程和计算机科学等各个领域都有应用。在本节中,我们将探讨调和数是什么,它们的意义以及如何在 Java 中计算它们。我们还将提供带有输出的示例 Java 程序……
阅读 4 分钟
计数排序是 Java 中最常用的排序技术之一,它基于特定范围内的键。计数排序不通过比较元素来执行排序。它通过计数具有不同键值的对象来执行排序,例如哈希。之后,它执行一些...
阅读 4 分钟
在Java中,TreeMap类是Map接口的一个常用实现,它根据键的自然排序或自定义比较器以排序的顺序存储键值对。默认情况下,TreeMap按升序对元素进行排序。但是,...
5 分钟阅读
我们可以使用 Java 程序从特定 URL 访问数据。Java 提供了 URL 和 URLConnection 类来通过网络与 URL 进行通信。这些类有许多有用的方法来处理 HTTP URL。在本节中,我们将讨论如何访问数据...
阅读 3 分钟
给出了一个整数数组。我们的任务是找到输入数组中最长连续整数子序列的长度。在输入数组中,连续整数可能同时出现,也可能不出现。例如:1 输入:int arr[] = {11, 39, 13,...
阅读9分钟
在本节中,我们将讨论 Java 中的方法隐藏是什么、方法隐藏因素 (MHF) 以及方法隐藏和方法重写的区别。此外,还将实现 Java 程序中的方法隐藏概念。要理解 Java 中的方法隐藏概念,首先我们将理解...
阅读 3 分钟
Java 中的魔术数字 程序 在编程中,魔术数字是指直接在代码中使用的、未经明确定义或解释的硬编码数字或字符串值。它以后可能会更改。它用于标识目的。它似乎是任意的,没有上下文或...
7 分钟阅读
给出了一个数字n。我们的任务是找到数字n!中存在的数字的总数。示例1:输入整数n = 9输出:6说明:9!的值为9 x 8 x 7 x 6 x 5 x 4 x 3 x...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India