Показать сообщение отдельно
Старый 23.10.2016, 12:50   #1 (permalink)
iks2
Member
 
Регистрация: 22.10.2016
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Как распечатать все перестановки цифр?

Дано конкретное число 111222. Требуется распечатать все перестановки цифр этого числа. Очевидно, что это можно сделать и в уме. Но как это сделать если цифры будут иными? То есть нужна программа.
Мне не удалось решить эту задачу, но я решил другую, ей подобную, когда цифры не повторяются и предлагаю эту программу взять за основу. Впрочем если вы найдете иное, с вашей точки зрения более простое решение, то меня это устроит...

Код:
DECLARE SUB SWEP (i!, j!)
DECLARE SUB P (k!)
CLS

DIM SHARED n
DIM SHARED x AS STRING
x = "1234"
n = LEN(x)
CALL P(1)
END

SUB P (k)
   IF k = n THEN
      PRINT x
   ELSE
      FOR i = k TO n
         SWEP k, i
         CALL P(k + 1)
         SWEP k, i
      NEXT i
   END IF
END SUB

SUB SWEP (i, j)
   DIM a AS STRING
   DIM b AS STRING
   a = MID$(x, i, 1)
   b = MID$(x, j, 1)
   MID$(x, i, 1) = b
   MID$(x, j, 1) = a
END SUB
iks2 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070