У меня есть две матрицы, позвольте мне назвать их ones_matrix и zero_matrix
Мне нужно создать новый список, который будет суммой лучших 20 строк из этой матрицы, таких как 10 строк из первой и 10 строк из второй, где минимальный элементв итоговом списке самая большая.
Так что это жадный алгоритм, где я выбираю лучший ряд из матрицы, чтобы добавить на каждом шаге.10 раз для onesMatrix и 10 раз для zero_matrix и 10 раз для ones_matrix, а также исключая повторы строк.
Каждый раз, когда нам нужно добавить что-то, чего мы раньше не добавляли.Мой вход - две матрицы 64 x 128, которые содержат только единицы и нули.
Так что мой ответ не может быть больше 20, потому что я суммирую 20 строк с нулями и единицами, а сумма из 20 строк, которая содержит только единицы, равна 64 * [20] с минимальным элементом - 20. Вот мой код:
ignored=set()
res=np.zeros(128)
for i in range(10):
j=best(res,ones_matrix,ignored)
res=res+ones_matrix[j]
ignored.add(j)
j = best(res, zero_matrix,ignored)
res = res + zero_matrix[j]
ignored.add(j)
def best(res,matrix,ignored):
for i in range(len(matrix)):
matrix[i]=matrix[i]+res
m=min(matrix[0])
index=0
for i in range(len(matrix)):
if (min(matrix[i])>=m and i not in ignored):
index=i
m=min(matrix[i])
print(index)
return index
Эти матрицы содержат только нули и нули, поэтому максимальный элемент в моей новой строке не может быть больше 20 (потому что я добавляю 20 строк, которые содержат нули и нули).Но когда я использую
print(min(res))
, я получаю огромное значение, например, 44266,0. Как мне сделать эту работу?
Лучшая строка - это строка с наибольшим минимальным элементом.