Найти - Пользователи
Полная версия: Замена максимальных елементов в диагоналях матрицы
Начало » Python для новичков » Замена максимальных елементов в диагоналях матрицы
1
Stanislav97
Всем привет! Есть код как найти эти елементы, но как их поменять местами???

   
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
   
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
  
Stanislav97
FishHook
Спасибо за отзыв, плюс в карму)) Ваш код меняет максимальный елемент на главной диагонали на любой произвольный, я видимо не совсем некорректно написал условие задачи: нужно поменять местами максимальный элемент с главной диагонали на максимальный элемент второстепенной диагонали. Буду очень благодарен за помощь.
FishHook
Stanislav97
на максимальный элемент второстепенной диагонали. Буду очень благодарен за помощь.
задача сводится к моему решению. Вам надо по подобию найти максимальный элемент другой диагонали, и после этого сделать замену, но не на произвольное значение, а на найденное.
py.user.next
Stanislav97
Есть код как найти эти елементы, но как их поменять местами?
Надо запомнить (i, j) максимального элемента на главной диагонали, потом запомнить (i, j) максимального элемента на побочной диагонали, а потом обменять их через переменную.

То есть в твоём коде запоминаются только значения элементов, а надо ещё запоминать эти пары (строка, столбец) впридачу.
Stanislav97
переходим на другую диагональ
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’
ничего не происходит, почему?
Stanislav97
py.user.next
Нужные мне значения(Firstmax, Secondmax) уже имеют свои координаты, как их вообще запомнить отдельно? Второй день в этом вопросе, уже понял как поменять диагонали, но не эти два максимальных елемента!
py.user.next
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
Stanislav97
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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB