от
Начиная с (0,0) на плоскости, учитывая положительное целое число n, я хочу сгенерировать все пути, состоящие из n-1 шагов от (0,0). Шаг может быть либо на шаг вправо, либо на шаг вверх. Например, если n = 4, то путь будет (0,0), (1,0), (1,1), (1,2). Я сейчас использую питон Я попытался позволить некоторому параметру подсчитать количество шагов, которые я делаю, а затем использовать цикл while, чтобы ограничить количество шагов и выполнить цикл по моему начальному массиву [[[0,0]]].
def f(n):
    A=[[[0,0]]]
    s=0
    while (int(s 1)<int(n)):
        for i in A:
            i.append([i[

Я получаю сообщение об ошибке: объект int не имеет атрибута getitem в строке 8. У меня также есть чувство, что существуют другие проблемы с приведенным выше кодом, но я не уверен, что это лучший способ сделать это.
    

        

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
Добро пожаловать в Stackoverflow. Эта проблема идеально подходит для рекурсивных методов. Если у вас есть путь длины N в точке P = (x, y), то вы знаете, что он образует два возможные пути длиной N 1, один в точку (x 1, y) и один в точку (x, y 1). Единственное, что вы знаете, это то, что в начальной точке есть один путь нулевой длины. Учитывая это, вы можете вычислить пути длины 1, пути длины 2 и скоро. Чтобы отделить логику генерации пути от бизнеса потребления пути я бы предложил использовать функцию генератора, позволяющую вашей логике
yield
a новый путь всякий раз, когда он находит. Затем вы можете перебрать этот генератор перечислять пути. Это похоже на работу:
def paths(in_path, N=1):
    if N==1:
        yield in_path
    else:
        x, y = in_path[

Вывод, который я вижу

[(0, 0), (1, 0), (2, 0), (3, 0)]
[(0, 0), (1, 0), (2, 0), (2, 1)]
[(0, 0), (1, 0), (1, 1), (2, 1)]
[(0, 0), (1, 0), (1, 1), (1, 2)]
[(0, 0), (0, 1), (1, 1), (2, 1)]
[(0, 0), (0, 1), (1, 1), (1, 2)]
[(0, 0), (0, 1), (0, 2), (1, 2)]
[(0, 0), (0, 1), (0, 2), (0, 3)]
что, к счастью, кажется, включает в себя пример, который вы дали.     
...