Помогите решить университетскую задачу
Дана матрица А размером nxm. Определить k — количество особых элементов массива А, считая его элемент особым, если он больше суммы остальных элементов его столбца.
m = [[2,4,6,8],
[3,5,2,7],
[9,4,1,8],
[1,6,1,3]]
col = [[m[k][i] for k in range(len(m))] for i in range(len(m[0]))]
result = []
def f(a):
for i in range(len(a)):
acc = 0
for k in range(len(a)):
if k == i:
continue
else: acc += a[k]
if a[i] > acc:
result.append(a[i])
for i in col:
f(i)
print(*result)
print('В матрице', len(result),'особых элементов')
Ответы (2 шт):
Автор решения: MBo
→ Ссылка
Думаю, проще сделать так:
Внешний цикл по номеру столбца.
Внутренний цикл считает сумму столбца colsum (это можно также сделать через sum по соответствующему срезу).
Второй внутренний цикл проходит по столбцу, проверяя, что
if m[i][j]*2 > colsum:
num_special += 1
Автор решения: Алексей Р
→ Ссылка
Если нет ограничений на использование функций, то можно сделать через zip, sum и max
m = [[2, 4, 6, 8],
[3, 5, 2, 7],
[9, 4, 1, 8],
[1, 6, 1, 3]]
result = []
for col in zip(*m):
el = max(col)
if el > sum(col) - el:
result.append(el)
print(*result)
print('В матрице', len(result), 'особых элементов')
9 6
В матрице 2 особых элементов