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

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

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

Author24 — интернет-сервис помощи студентам
Добрый день! помогите, пожалуйста, понять как в python можно для заданого числа получить все возможные варианты перестановок, при условии, что есть ограничение на количество перестановок. К примеру, есть число 4256 и к-во перестановок, что нужно сделать - 2. То есть желаемым результатом будет список вида: 2465, 5642, 6524 и тд...
Как это лучше всего сделать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2021, 15:53
Ответы с готовыми решениями:

Нахождение обратной перестановки
Доброго времени суток! Есть матрица. Каждая строка матрицы задана перестановкой из первой строки...

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

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

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

11
Status 418
Эксперт Python
4581 / 2348 / 602
Регистрация: 26.11.2017
Сообщений: 5,264
Записей в блоге: 3
13.09.2021, 16:45 2
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  [ТС] 3
Спасибо, а как добавить условие на количество перестановок (то есть чтобы получить только те варианты, где числа переставлялись попарно N раз)? В этом коде ведь выводятся абсолютно все перестановки...
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37303 / 20737 / 4272
Регистрация: 12.02.2012
Сообщений: 34,131
Записей в блоге: 14
13.09.2021, 17:15 4
Цитата Сообщение от Аня хукер Посмотреть сообщение
получить все возможные варианты перестановок
Цитата Сообщение от Аня хукер Посмотреть сообщение
при условии, что есть ограничение на количество перестановок.
- тебе не кажется, что одно немного противоречит другому?

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

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

Не по теме:

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

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

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

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

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

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

Задача на нахождение лучшей перестановки
0
Эксперт Python
8592 / 4418 / 1855
Регистрация: 27.03.2020
Сообщений: 7,251
13.09.2021, 20:47 11
Лучший ответ Сообщение было отмечено Аня хукер как решение

Решение

Аня хукер, попробуй:
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  [ТС] 12
Gdez, спасибо вам большое!)
0
13.09.2021, 21:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2021, 21:03
Помогаю со студенческими работами здесь

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

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

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

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

Сложная задача на перестановки
Перестановкой размера n называется массив ⟨a1, a2, . . . , an⟩ различных чисел от 1 до n. Каждое...

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

Задача на перестановки элементов массива
Всем доброго дня. Решаю задачку на перестановки элементов массива. Звучит она так: Хосе поставил...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru