Как распечатать все перестановки цифр?
Дано конкретное число 111222. Требуется распечатать все перестановки цифр этого числа. Очевидно, что это можно сделать и в уме. Но как это сделать если цифры будут иными? То есть нужна программа.
Мне не удалось решить эту задачу, но я решил другую, ей подобную, когда цифры не повторяются и предлагаю эту программу взять за основу. Впрочем если вы найдете иное, с вашей точки зрения более простое решение, то меня это устроит... Код:
DECLARE SUB SWEP (i!, j!) |
я нашел решение предложенной задачи, это решение не самое лучшее, но оно работает. Алгоритм состоит в том: итак мы имеем число 111222, если мы это число будем увеличивать на 1, то мы достигнем максимально возможного числа 222111. И если мы при этом будем откидывать все "лишние" числа, то у нас останутся лишь те, что содержат цифры 1 и 2 (по три раза). Эти числа программа и выносит на экран. Их в данном случае всего 20.
Код:
DECLARE FUNCTION SUM$ (x$) |
Есть формула дискретной математики, перестановка без повторения. Количество перестановок по ней можно определить.
|
AlexZir,
Спасибо. Но в данном случае все-таки требуется выдать на экран все перестановки, а не считать их количество. Что то алгоритм мне не нравится. Наверняка должен быть более быстрый... |
Часовой пояс GMT +4, время: 20:31. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.