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++程序以检查矩阵的所有行是否彼此循环旋转的方法和算法。