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.