Проверьте последнюю перестановку - PullRequest
0 голосов
/ 07 ноября 2019

Я создал программу, в которой пользователь вводит набор чисел (в виде строки) и распечатывает следующую перестановку. Если они вводят лексикографически последнюю перестановку, программа должна вывести «Без перестановки», однако мой код все равно распечатывает следующую перестановку (или, вернее, первую), если вводит последнюю.

Любые идеи о том, как решитьthis?

inp = list(map(int,input().split()))     # user input
def nextPermutation(nums):               # function to check for the next permutation
    i = len(nums) - 1
    while i > 0 and nums[i] <= nums[i-1]:
        i -= 1
    if i == 0:
        nums.reverse()
    else:
        j = i
        i -= 1
        while j < len(nums) and nums[j] > nums[i]:
            j += 1
        j -= 1
        nums[j], nums[i] = nums[i], nums[j]
        nums[i+1:] = nums[i+1:][::-1]
    if nums:                             # this should return the next permutation
        return '' + " ".join(str(e) for e in nums)
    else:                                # if it has no permutation it should return this
        return "No permutation"

print(nextPermutation(inp))

Пример ввода: 3 2 1 Ожидаемый выход: No permutation Токовый выход: 1 2 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...