Все перестановки числа 111222 - QBasic

Узнай цену своей работы

Формулировка задачи:

Число 111222 можно рассматривать как двоичное И чтобы получить все перестановки - надо к этому числу "прибавлять" 1 по правилу. 1+1=2, 2+1=11. До тех пор, пока не получится число 222111. Кроме того надо проверять чтобы число единичек равнялось число двоек. Эта программа делает как сказано выше (проверено)

Решение задачи: «Все перестановки числа 111222»

textual
Листинг программы
DECLARE FUNCTION MyNarayanaNextPerm(n AS LONG) AS LONG
DATA 1,1,1,2,2,2
 
DIM SHARED prmArr(1 TO 6) AS LONG
DIM n AS LONG, i AS LONG
  
n = 6
 
FOR i=1 TO n
    READ prmArr(i)
NEXT i
 
DO
    FOR i = 1 TO n
        PRINT prmArr(i);
    NEXT
    PRINT
LOOP WHILE MyNarayanaNextPerm(n)
'Sleep
    
FUNCTION MyNarayanaNextPerm(n AS LONG) AS LONG
    DIM i AS LONG, k AS LONG, t AS LONG
    
    FOR k = n - 1 TO 1 STEP -1
        IF prmArr(k) < prmArr(k + 1) THEN EXIT FOR
    NEXT k
    IF k THEN
        t = n
        WHILE t > k AND prmArr(k) >= prmArr(t)
        t = t - 1
        WEND
        SWAP prmArr(k), prmArr(t)
        t = n
        FOR i = k + 1 TO (n + k) \ 2
           SWAP prmArr(i), prmArr(t)
           t = t - 1
        NEXT i
        MyNarayanaNextPerm = i
    END IF
END FUNCTION

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы