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++程序以检查矩阵的所有行是否彼此循环旋转的方法和算法。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP