用 Python 检查矩阵的所有行是否彼此循环旋转
假设,我们得到一个大小为 n*n 的矩阵,其中包含整数。我们必须找出该矩阵的所有行是否都是其前一行的循环旋转。对于第一行,它应该是第 n 行的循环旋转。
因此,如果输入如下所示
B | A | D | C |
C | B | A | D |
D | C | B | A |
A | D | C | B |
则输出将为 True。
为了解决这个问题,我们将遵循以下步骤:
- concat := 空字符串
- 对于 i 从 0 到行数,执行
- concat := concat 连接 "-" 连接 matrix[0,i]
- concat := concat 连接 concat
- 对于 i 从 1 到矩阵大小,执行
- curr_row := 空字符串
- 对于 j 从 0 到列数,执行
- curr_row := curr_row 连接 "-" 连接 matrix[i,j]
- 如果 curr_row 存在于字符串 concat 中,则
- 返回 True
- 返回 False
示例
让我们看看以下实现以更好地理解:
def solve(matrix) : concat = "" for i in range(len(matrix)) : concat = concat + "-" + str(matrix[0][i]) concat = concat + concat for i in range(1, len(matrix)) : curr_row = "" for j in range(len(matrix[0])) : curr_row = curr_row + "-" + str(matrix[i][j]) if (concat.find(curr_row)) : return True return False matrix = [['B', 'A', 'D', 'C'], ['C', 'B', 'A', 'D'], ['D', 'C', 'B', 'A'], ['A', 'D', 'C', 'B']] print(solve(matrix))
输入
[['B', 'A', 'D', 'C'], ['C', 'B', 'A', 'D'], ['D', 'C', 'B', 'A'], ['A', 'D', 'C', 'B']]
输出
True
广告