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++程式以檢查矩陣的所有行是否彼此迴圈旋轉的方法和演算法。

更新於: 2023年10月30日

60次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告