Уведомления

Группа в Telegram: присоединиться

#1 Янв. 14, 2020 08:47:10

Stanislav97
Зарегистрирован: 2020-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена максимальных елементов в диагоналях матрицы

Всем привет! Есть код как найти эти елементы, но как их поменять местами???

   
def FindMaxElement(mat):
    n = len(mat)
    if (n == 0):
        return
    Firstmax = mat[0][0]
    Secondmax = mat[n - 1][0]
    for i in range(1, n):
        for j in range(1, n):
            if (i == j):
                if (mat[i][j] > Firstmax):
                    Firstmax = mat[i][j]
            if ((i + j) == (n - 1)):
                if (mat[i][j] > Secondmax):
                    Secondmax = mat[i][j]
    print("First max element : ",
          Firstmax)
    print("Second max element: ",
          Secondmax)
matrix = [[1, 2, 3, 4, 1],
          [5, 1, 7, 9, 6],
          [1, 2, 2, 3, 4],
          [5, 2, 7, 1, 8],
          [2, 1, 7, 1, 1]]
FindMaxElement(matrix)











Отредактировано FishHook (Янв. 14, 2020 10:24:26)

Офлайн

#2 Янв. 14, 2020 10:28:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 7232
Репутация: +  488  -
Профиль   Отправить e-mail  

Замена максимальных елементов в диагоналях матрицы

   
matrix = [[1, 2, 3, 4, 1],
          [5, 1, 7, 9, 6],
          [1, 2, 2, 3, 4],
          [5, 2, 7, 1, 8],
          [2, 1, 7, 1, 1]]
  
max_element = max(matrix[i][i] for i in range(len(matrix)))
  
for i in range(len(matrix)):
    if i == max_element:
        matrix[i][i] = 'A'
  
print matrix
  



Офлайн

#3 Янв. 14, 2020 11:09:58

Stanislav97
Зарегистрирован: 2020-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена максимальных елементов в диагоналях матрицы

FishHook
Спасибо за отзыв, плюс в карму)) Ваш код меняет максимальный елемент на главной диагонали на любой произвольный, я видимо не совсем некорректно написал условие задачи: нужно поменять местами максимальный элемент с главной диагонали на максимальный элемент второстепенной диагонали. Буду очень благодарен за помощь.

Офлайн

#4 Янв. 14, 2020 13:56:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 7232
Репутация: +  488  -
Профиль   Отправить e-mail  

Замена максимальных елементов в диагоналях матрицы

Stanislav97
на максимальный элемент второстепенной диагонали. Буду очень благодарен за помощь.
задача сводится к моему решению. Вам надо по подобию найти максимальный элемент другой диагонали, и после этого сделать замену, но не на произвольное значение, а на найденное.



Офлайн

#5 Янв. 14, 2020 14:14:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 6659
Репутация: +  595  -
Профиль   Отправить e-mail  

Замена максимальных елементов в диагоналях матрицы

Stanislav97
Есть код как найти эти елементы, но как их поменять местами?
Надо запомнить (i, j) максимального элемента на главной диагонали, потом запомнить (i, j) максимального элемента на побочной диагонали, а потом обменять их через переменную.

То есть в твоём коде запоминаются только значения элементов, а надо ещё запоминать эти пары (строка, столбец) впридачу.



Офлайн

#6 Янв. 14, 2020 15:24:21

Stanislav97
Зарегистрирован: 2020-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена максимальных елементов в диагоналях матрицы

переходим на другую диагональ
n = 0
max_element_second = max(matrix for j in range(len(matrix)))
for j in range(len(matrix)):
if ((i + j) == (n - 1)):
if j == max_element_second:
matrix = ‘B’

print(matrix)

не меняет даже максимальный элемент побочной диагонали на ‘B’
ничего не происходит, почему?

Офлайн

#7 Янв. 14, 2020 15:30:37

Stanislav97
Зарегистрирован: 2020-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена максимальных елементов в диагоналях матрицы

py.user.next
Нужные мне значения(Firstmax, Secondmax) уже имеют свои координаты, как их вообще запомнить отдельно? Второй день в этом вопросе, уже понял как поменять диагонали, но не эти два максимальных елемента!

Офлайн

#8 Янв. 14, 2020 15:50:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 6659
Репутация: +  595  -
Профиль   Отправить e-mail  

Замена максимальных елементов в диагоналях матрицы

Stanislav97
  
                if (mat[i][j] > Firstmax):
                    Firstmax = mat[i][j]
Добавить строку
  
                if (mat[i][j] > Firstmax):
                    Firstmax = mat[i][j]
                    f_i, f_j = i, j

Stanislav97
  
            if ((i + j) == (n - 1)):
                if (mat[i][j] > Secondmax):
                    Secondmax = mat[i][j]
Добавить строку
  
            if ((i + j) == (n - 1)):
                if (mat[i][j] > Secondmax):
                    Secondmax = mat[i][j]
                    s_i, s_j = i, j

И потом после цикла сделать
  
t = mat[f_i][f_j]
mat[f_i][f_j] = mat[s_i][s_j]
mat[s_i][s_j] = t



Отредактировано py.user.next (Янв. 14, 2020 15:50:37)

Офлайн

#9 Янв. 14, 2020 16:33:06

Stanislav97
Зарегистрирован: 2020-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена максимальных елементов в диагоналях матрицы

py.user.next
Заработало!!! Помог, подсказал, выручил!!!! 5 строк кода решили проблему, спасибо тебе, добрый человек)
Вот весь код целиком, если кому нужно, благодарите py.user.next
def FindMaxElement(mat):
n = len(mat)
if (n == 0):
return
Firstmax = mat
Secondmax = mat
for i in range(1, n):
for j in range(1, n):
if (i == j):
if (mat > Firstmax):
Firstmax = mat
f_i, f_j = i, j

if ((i + j) == (n - 1)):
if (mat > Secondmax):
Secondmax = mat
s_i, s_j = i, j

t = mat
mat = mat
mat = t

print(“First max element : ”,
Firstmax)
print(“Second max element: ”,
Secondmax)

matrix = [,
,
,
,
]

print(matrix)

FindMaxElement(matrix)
print(matrix)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version