C++程式檢查矩陣的所有行是否彼此迴圈旋轉
本文旨在實現一個C++程式,用於檢查矩陣的所有行是否彼此迴圈旋轉。以下是關於矩陣的簡要概述。
以行和列組織的符號或數字的矩形陣列稱為矩陣。矩陣可以有多種不同的型別,包括行矩陣、列矩陣、水平矩陣、垂直矩陣、方陣、對角矩陣、單位矩陣、相等矩陣和奇異矩陣。加法、減法和乘法是三種基本的矩陣運算。
目標是確定大小為n*n的矩陣的所有行是否彼此迴圈旋轉。
示例1
Let us take the Input matrix : m[][] = 9, 8, 7 7, 9, 8 7, 8, 9 The Output obtained is : Yes
說明 − 這裡每一行都是透過彼此的排列旋轉得到的。
示例2
Let us take the Input matrix : m[][] = 9, 8, 7 7, 9, 8 7, 8, 9 The Output obtained is : No
說明 − 在這裡您可以觀察到7,8,9不是7,9,8的旋轉排列。因此結果為“否”。
示例3
Let us take the Input matrix: m[][] = 3, 4, 5 5, 3, 4 4, 5, 3 The Output obtained is : Yes
說明 − 這裡每一行都是透過彼此的排列旋轉得到的。
示例4
Let us take the Input matrix: m[][] = 3, 4, 5 4, 3, 5 5, 4, 3 The Output obtained is : No
說明 − 在這裡您可以觀察到4,3,5不是3,4,5的旋轉排列。因此結果為“否”。
問題陳述
實現一個C++程式來檢查矩陣的所有行是否彼此迴圈旋轉
方法
解決此問題並獲得C++程式以檢查矩陣的所有行是否彼此迴圈旋轉的方法。我們執行以下步驟。
為了確保能夠有效地執行字串搜尋操作,建立一個由第一行的元素組成的字串,然後將該字串自身連線起來。請將此連線後的字串稱為concatenatedStr。
現在遍歷其餘的行。對於遍歷的每一行,建立一個名為currStr的字串,其中包含當前行的元素。如果當前字串(即currStr)不是連線字串(即concatenatedStr)的子字串,則返回false。
演算法
實現C++程式以檢查矩陣的所有行是否彼此迴圈旋轉的演算法如下所示:
步驟1 − 定義一個函式,如果大小為n的矩陣m[0..n-1][0..n-1]中的所有行都是彼此的旋轉,則該函式返回true。
步驟2 − 定義一個用第一行的元素生成的字串。
步驟3 − 接下來,將字串自身連線起來,以便將其用於子字串搜尋操作。
步驟4 − 現在遍歷剩下的行
步驟5 − 將矩陣組織成向量中的字串。
步驟6 − 驗證當前字串是否包含在連線字串中。
步驟7 − 返回“是”或“否”作為結果。
示例:C++程式
以下是上述演算法的C++程式實現,以獲得一個C++程式來檢查矩陣的所有行是否彼此迴圈旋轉
#include <bits/stdc++.h> using namespace std; const int MAX = 1000; bool isPermutationMat(int m[MAX][MAX], int n){ string concatenatedStr = ""; for (int i = 0; i < n; i++) concatenatedStr = concatenatedStr + "-" + to_string(m[0][i]); concatenatedStr = concatenatedStr + concatenatedStr; for (int i = 1; i < n; i++) { string currStr = ""; for (int j = 0; j < n; j++) currStr = currStr + "-" + to_string(m[i][j]); if (concatenatedStr.find(currStr) == string::npos) return false; } return true; } int main(){ int n = 4; int m[MAX][MAX] = {{5, 6, 7, 8}, {8, 5, 6, 7}, {7, 8, 5, 6}, {8, 7, 4, 5} }; isPermutationMat(m, n) ? cout << "Yes" : cout << "No"; return 0; }
輸出
No
結論
同樣,我們可以使用C++程式來檢查矩陣的所有行是否彼此迴圈旋轉。本文解決了獲得C++程式以檢查矩陣的所有行是否彼此迴圈旋轉的挑戰。
這裡提供了C++程式設計程式碼以及實現C++程式以檢查矩陣的所有行是否彼此迴圈旋轉的方法和演算法。