C++程序打印矩阵的所有非边界元素
矩阵是二维数组。位于边缘的元素称为边界元素,位于矩阵内部而非边缘的元素称为非边界元素。本文将讨论如何打印矩阵的非边界元素。
问题描述
给定一个矩阵,我们必须打印矩阵中存在的所有非边界元素。矩阵中存在行和列。水平线称为行,垂直线称为列。以下是一些示例,以便更清楚地理解问题。
示例1
输入
1 2 3 4 5 6 7 8 9
输出
5
示例2
输入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
输出
8 9 10 11 14 15 16 17 20 21 22 23 26 27 28 29
方法
此方法包括以下步骤:
- 检查矩阵是否只有一行或一列。如果为真,则矩阵中没有边界元素。
- 识别边界元素
对于行,边界元素存在于第一行(行 0)或最后一行(行 = 行数 - 1)。
对于列,边界元素存在于第一列(列 0)或最后一列(列 = 列数 - 1)。 - 遍历矩阵并仅打印非边界元素,跳过已识别的边界元素。
C++程序打印矩阵的所有非边界元素
#include <bits/stdc++.h>
using namespace std;
void nonBoundaryElements(int rows, int cols, int matrix[5][6]) {
// Check edge case
if (rows < 3 || cols < 3) {
cout << "No non-boundary elements exist in the matrix." << endl;
return;
}
// Skip row elements
for (int i = 1; i < rows - 1; i++) {
// Skip column elements
for (int j = 1; j < cols - 1; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main() {
int rows = 5, cols = 6;
int matrix[5][6] = {
{1, 2, 3, 4, 5, 6},
{7, 8, 9, 10, 11, 12},
{13, 14, 15, 16, 17, 18},
{19, 20, 21, 22, 23, 24},
{25, 26, 27, 28, 29, 30}
};
// Print the non-boundary elements
cout << "Non-boundary elements of the matrix are:" << endl;
nonBoundaryElements(rows, cols, matrix);
return 0;
}
输出
Non-boundary elements of the matrix are: 8 9 10 11 14 15 16 17 20 21 22 23
时间和空间复杂度
时间复杂度:O(行数 × 列数),因为我们正在遍历除边界元素之外的行和列。
空间复杂度:O(1),因为我们没有使用任何数据结构。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP