|
0 / 0 / 0
Регистрация: 10.12.2017
Сообщений: 7
|
||||||
Перестановка цифр трехзначного числа17.01.2018, 11:35. Показов 6977. Ответов 10
Метки нет (Все метки)
Комбинаторика. Перестановка цифр трехзначного числа.
Необходимо найти все числа, образуемые путём перестановки цифр исходного числа. Ниже код, написанный чайником. А как бы решить задачу красиво? Подскажите пожалуйста.
0
|
||||||
| 17.01.2018, 11:35 | |
|
Ответы с готовыми решениями:
10
|
|
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
|
|
| 17.01.2018, 13:39 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 10.12.2017
Сообщений: 7
|
||||||
| 17.01.2018, 21:39 [ТС] | ||||||
|
Я привел выше корявое решение задачи, так как руками сам
написал чередование цифр, а Паскаль только лишь вывел результат на экран. Но нужен алгоритм который перебирает различные варианты перестановок. Если А,B,C задать в виде типа char, то алгоритм перестановок такой:
0
|
||||||
|
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
|
|||||||||||||
| 18.01.2018, 06:12 | |||||||||||||
Добавлено через 17 минут или на 1 цикл меньше
0
|
|||||||||||||
|
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
|
|||||||||||
| 18.01.2018, 06:27 | |||||||||||
Сообщение было отмечено ZX Spectrum-128 как решение
Решение
Вот универсальный способ с рекурсией:
Только в нём должны быть все цифры различны… ;–( Чтобы генерировать только „уникальные перестановки“, нужно их запоминать… Ну хотя бы в строке:
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 10.12.2017
Сообщений: 7
|
|
| 21.01.2018, 11:29 [ТС] | |
|
Joy и JuriiMW, большое спасибо за предложенные решения!!!
0
|
|
|
58 / 42 / 21
Регистрация: 01.01.2018
Сообщений: 273
|
||||||||||||
| 23.01.2018, 23:24 | ||||||||||||
|
Не надо запоминать все строки, что вы? Все прекрасно работает вот так:
![]() Добавлено через 11 минут Работает с числами, не превышающими длину строки (еще больше, чем longint). Не считает число новым при перестановке одинаковых элементов. Убираешь эту строчку и числа могут начинаться с 0:
Добавлено через 13 минут Уже при входных данных "123456789" программа выводит далеко не все варианты. В контексте задачи, конечно, подходит, но вот на тех же олимпиадах не прокатит
0
|
||||||||||||
|
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
|
||
| 24.01.2018, 06:37 | ||
|
„Трёхзначные!“ Хотя для значения 123456789 строка будет занимать всего какие-то три с половиной мегабайта… Да по нынешним временам это: тфу! и растереть. Это, в других паскалях может и приведёт к переполнению. Но не в PABC.NET.
0
|
||
|
58 / 42 / 21
Регистрация: 01.01.2018
Сообщений: 273
|
|
| 24.01.2018, 23:18 | |
|
Вопрос не в "каких-то трёх мегабайтах", а в неверном результате при вводе этого числа. Программа просто не учитывает все варианты.
Ну и про контекст задачи я, кажется, уже сам писал выше. На мой взгляд, любую задачу надо решать универсально, практично и по мере сил красиво. К вашему решению тут подходят не все пункты. А вот про переполнение наврал, признаю. Не так давно с турбо слез, сложно привыкнуть к такой свободе.
0
|
|
|
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
|
|
| 25.01.2018, 09:35 | |
|
0
|
|
|
58 / 42 / 21
Регистрация: 01.01.2018
Сообщений: 273
|
|
| 25.01.2018, 22:10 | |
|
Пример давно в студии. Вводимое число не изменилось. "123456789". Программы у вас есть, не смею задерживать.
Добавлено через 8 часов 1 минуту Хотя здесь я, скорее всего, неправ. Зато можно сравнить быстродействие программ при вводе, скажем, числа "111122223333". Здесь Ваш вариант ощутимо проигрывает Добавлено через 1 минуту Собственно, у меня выполняется уже несколько минут, и конца этому не видно
0
|
|
| 25.01.2018, 22:10 | |
|
Помогаю со студенческими работами здесь
11
Сумма каких либо двух цифр заданного трехзначного натурального числа n равна третьей цифре Определить,равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа
Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа Сумма цифр трехзначного числа кратна 7, само число также делится на 7. Найдите все такие числа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|