Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 06.06.2018
Сообщений: 33

Задача на нахождение лучшей перестановки

13.09.2021, 15:53. Показов 3787. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! помогите, пожалуйста, понять как в python можно для заданого числа получить все возможные варианты перестановок, при условии, что есть ограничение на количество перестановок. К примеру, есть число 4256 и к-во перестановок, что нужно сделать - 2. То есть желаемым результатом будет список вида: 2465, 5642, 6524 и тд...
Как это лучше всего сделать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.09.2021, 15:53
Ответы с готовыми решениями:

Нахождение обратной перестановки
Доброго времени суток! Есть матрица. Каждая строка матрицы задана перестановкой из первой строки по правилу: {a}_{1i} -случайная...

Нахождение мин числа путём перестановки цифр
Срочно нужна п на тему "Автоматизация нахождения минимального числа путем перестановки цифр" На Delphi. help не знаю Delphi!

Нахождение максимального числа после перестановки его цифр
Условие На вход программе подаётся последовательность символов,заканчивающаяся точкой.Требуется написать программу,которая...

11
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
13.09.2021, 16:45
Python
1
2
3
4
from itertools import permutations
s = '4256'
for p in permutations(s):
    print(*p, sep='')
так?
0
1 / 1 / 0
Регистрация: 06.06.2018
Сообщений: 33
13.09.2021, 17:10  [ТС]
Спасибо, а как добавить условие на количество перестановок (то есть чтобы получить только те варианты, где числа переставлялись попарно N раз)? В этом коде ведь выводятся абсолютно все перестановки...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38190 / 21125 / 4307
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
13.09.2021, 17:15
Цитата Сообщение от Аня хукер Посмотреть сообщение
получить все возможные варианты перестановок
Цитата Сообщение от Аня хукер Посмотреть сообщение
при условии, что есть ограничение на количество перестановок.
- тебе не кажется, что одно немного противоречит другому?

eaa, Вы понимаете, что ей нужно?

Добавлено через 1 минуту
Цитата Сообщение от Аня хукер Посмотреть сообщение
К примеру, есть число 4256 и к-во перестановок, что нужно сделать - 2
из числа 4356 сделать -2?
0
13.09.2021, 17:21

Не по теме:

Catstail, неа)) не понимаю...

0
1 / 1 / 0
Регистрация: 06.06.2018
Сообщений: 33
13.09.2021, 17:44  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
из числа 4356 сделать -2?
неее, вы меня совсем не поняли) количество перестановок - это то, сколько раз мы меняем местами пары символов.

Возьмем более наглядный пример: есть число 123 и после одной перестановки мы получим такие варианты: 213 (поменялась местами пара 1 и 2), 132 (аналогично, пара цифр "2 и 3" поменялись), 321. Применяя только одну перестановку - это все доступные варианты.

А, например, чтобы добиться числа 312, к первоначальному "123" нужно применить уже 2 перестановки - т.е. 123 -> 321 -> 312

Надеюсь теперь понятна суть.
И вот по такому принципу я хотела для 4256 сделать (при условии двух перестановок). То есть, чтобы в списке комбинаций были только те варианты, где сделано именно 2 перестановки (пример - 6524), а вариантов вида "4265" не было. (в условии самой задачи просят чтобы количество перестановок было строго равно N-ному числу)
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
13.09.2021, 18:08
Аня хукер, символы строки перемещаются попарно строго один раз?
4256 -> 2456 (первая перестановка) -> 6452 (вторая) - такое допускается?
0
1 / 1 / 0
Регистрация: 06.06.2018
Сообщений: 33
13.09.2021, 18:26  [ТС]
допускается, но конечный смысл всего этого заключается в том, чтобы получить наибольшее возможное число, проведя строго заданное количество перестановок. Просто я предположила что можно составить список вариаций, а из них уже выбрать максимальное число...

Для того же 123, имея 2 перестановки, максимальным результатом есть 312. А для 4256 - 6524.
Если для 4256 задать 3 перестановки, то и максимальное число будет 6542.
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
13.09.2021, 18:42
мда... из пушки по воробьям...
эта задача решается по другому. сортировку проходите?
0
1 / 1 / 0
Регистрация: 06.06.2018
Сообщений: 33
13.09.2021, 19:12  [ТС]
А какой метод сортировки здесь подойдет, подскажите пожалуйста? Понимаю, что мой начальный план это скорее кощунство, но казалось неплохой идеей). На всякий случай прикреплю задание, может все совсем иначе, чем я думала

0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
13.09.2021, 20:47
Лучший ответ Сообщение было отмечено Аня хукер как решение

Решение

Аня хукер, попробуй:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def perm(st):
    res = set()
    
    for elem in st:
        n = len(elem)
        
        for i in range(n-1):
            for j in range(i+1, n):
                
                tmp = list(elem)
                tmp[i], tmp[j] = tmp[j], tmp[i]
                res.add(''.join(tmp))
                
    return res
 
 
num = input()
k = int(input())
tmp = {num}
 
if k > 0:
    tmp = perm(tmp)
    if k > 1:
        tmp = perm(tmp)
        if k > 2:
            tmp = perm(tmp)
            if k%2 == 0:
                tmp = perm(tmp)
 
print(int(max(tmp, key=int)))
2
1 / 1 / 0
Регистрация: 06.06.2018
Сообщений: 33
13.09.2021, 21:03  [ТС]
Gdez, спасибо вам большое!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.09.2021, 21:03
Помогаю со студенческими работами здесь

Задача на перестановки
Привет всем. Недавно встретилась мне задача но никак не могу придумать алгоритм для решения задачи. А задача заключается в следующем: ...

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

Задача. Перестановки
Не могу до конца понять смысл задачи. Что обозначено переменными pi, pi+1? И чего-то я не понимаю, как получают цифру 4 в первом примере....

Перестановки, простая задача
среди перестановок цифр 1 2 3 4 5, сколько таких, которые не начинаются цифрами 3 или 5.

Задача на восстановление перестановки
Решаю второй день, всю голову сломал. Очень похоже на восстановление перестановки по ее инверсии, но не оно. Есть последовательность N...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru