Форум сайта python.su
Пусть вновь имеются N станций и таблица цен на проезд между ними. Требуется найти все такие пары станций, для которых дешевле проехать от одной до другой с одной пересадкой через какую-то третью станцию, чем напрямую.
Формат ввода
На первой строке вводится натуральное число N — количество станций.
Далее следует N-1 строка, составляющая половину таблицы цен, как в предыдущих задачах на эту тему.
Формат вывода
Выводится список пар номеров станций, удовлетворяющих условию (каждая пара — через пробел). Пары должны быть отсортированы по возрастанию по первому номеру, затем — по второму, и пары не должны повторяться, в том числе с изменённым порядком номеров в паре.
Пример
Ввод:
4
10
10 10
1 1 1
Вывод:
0 1
0 2
1 2
Помогите решить. Вот кусок кода для ввода значений в матрицу:
n = int(input()) matrix = [[0 for _ in range(n)] for _ in range(n)] for i in range(1, n): matrix[i] = [int(i) for i in input().split()] matrix[i] += [0 for _ in range(n - len(matrix[i]))]
Офлайн
И в чем загвоздка то?
Офлайн
Не получается разделить массив на массив из 2-х значений, функция просто ничего не делит, подскажите как правильно обратиться к нужному мне элементу матрицы, i-й получается массив, а как правильно обратиться к значению в массиве массивов?
import operator n = int(input()) array = [[0 for _ in range(n)] for _ in range(n)] for i in range (1, n): array[i] = [int(i) for i in input().split()] array[i] += [0 for _ in range(n - len(array[i]))] a = sorted(array, key=operator.itemgetter(0, 1)) def split(arr, count): return [arr[n::count] for n in range(count)] print(split(a, 2))
Отредактировано Borol (Янв. 8, 2019 20:55:20)
Офлайн
Тут алгоритм интереснее, а ввод-вывод потом дописать можно.
Допустим, матрица уже есть:
# matrix = [[0, 1, 2, 3], [1, 0, 3, 1], [2, 3, 0, 1], [3, 1, 1, 0]]
matrix[a][b]
Отредактировано uf4JaiD5 (Янв. 15, 2019 18:00:19)
Офлайн