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