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),因为我们没有使用任何数据结构。

AYUSH MISHRA
AYUSH MISHRA

工程师

更新于:2024年11月20日

15 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.