lovespacetech Ответов: 1

Как мы можем решить эту проблему генерал


# Мы задали матрицу и положение квадратной N*N подматрицы,
# Мы должны повернуть эту подматрицу на 90 градусов по часовой стрелке
# А затем вывести всю матрицу целиком
# Например, входная матрица имеет вид,
# 1 2 3 4
# 5 6 7 8
# 9 10 11 12
# 13 14 15 16
# Позиция (x, y) = (1, 1) и значение N = 3
# Выход есть,
# 1 2 3 4
# 5 14 10 6
# 9 15 11 7
# 13 16 12 8

Что я уже пробовал:

Я пробовал в python, но он применим только для тех случаев, когда x и y одинаковы.
def rotate_submat_90_clk(A, x, y, N):
    for i in range(N//2):
        for j in range(i, N-i-1):
            temp = A[i+y][j+x]
            A[i+y][j+x] = A[N-j-1+x][i+y]
            A[N-j-1+x][i+y] = A[N-i-1+y][N-j-1+x]
            A[N-i-1+y][N-j-1+x] = A[j+x][N-i-1+y]
            A[j+x][N-i-1+y] = temp
    for i in range(len(A[0])):
        print(A[i])

1 Ответов

Рейтинг:
0

Patrice T

Цитата:
Я пробовал в python, но он применим только для тех случаев, когда x и y одинаковы.

Поскольку вы меняете местами x и y, иногда x используется как строка, иногда это столбец, и наоборот для y.
Вам нужно выбрать, какой из них является номером строки, а другой-номером столбца, и не изменять его в середине кода.