Интересная Олимпиадная Задача - QBasic

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

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

Удалить из одномерного массива наименьшее количество элементов так, что бы оставшиеся элементы возрастали

Решение задачи: «Интересная Олимпиадная Задача»

textual
Листинг программы
DECLARE SUB printArr ()
DECLARE FUNCTION check% ()
DATA 7, 1, 4, 5, 9, 6, 7, 8, 3, 2, 10
DIM SHARED n AS LONG
n = 11
DIM SHARED aArr(1 TO n) AS LONG
DIM SHARED bArr(1 TO n) AS INTEGER
 
 
DIM a(1 TO n) AS LONG, i AS LONG, k AS LONG, p  AS LONG, j AS LONG
 
FOR i = 1 TO n: READ aArr(i): NEXT i
   
CLS
PRINT "Array:": CALL printArr
PRINT "New array:"
IF check = 1 THEN CALL printArr: END
 
FOR k = 1 TO n - 1
    REDIM a(1 TO k) AS LONG
    p = k
    FOR i = 1 TO k: a(i) = i: NEXT i
    DO
        j = j + 1
        REDIM bArr(1 TO n) AS INTEGER
        FOR i = 1 TO k: bArr(a(i)) = 1: NEXT i
        IF check = 1 THEN
        CALL printArr
        PRINT "kol-vo combyn:"; j
        END
        END IF
        
        IF p = 0 THEN EXIT DO
        FOR i = k TO p STEP -1
        a(i) = a(p) + i - p + 1
        NEXT i
        IF a(k) = n THEN p = p - 1 ELSE p = k
    LOOP
NEXT k
 
FUNCTION check%
    DIM i AS LONG, maxArr AS LONG
    FOR i = 1 TO n
    IF bArr(i) = 0 THEN
        IF aArr(i) > maxArr THEN maxArr = aArr(i) ELSE EXIT FUNCTION
    END IF
    NEXT i
    check = 1
END FUNCTION
 
SUB printArr
    DIM i AS LONG
    FOR i = 1 TO n
    IF bArr(i) = 0 THEN PRINT aArr(i);
    NEXT i
    PRINT
END SUB

Объяснение кода листинга программы

  1. Объявление подпрограммы printArr и функции check%
  2. Задание начального значения переменной n равным 11
  3. Заполнение массива aArr значениями от 7 до 11 через шаг 2
  4. Заполнение массива bArr значениями от 1 до 10 через шаг 2
  5. Проверка значения переменной check% и вызов подпрограммы printArr при его равенстве 1
  6. В цикле от 1 до n-1 перебираются элементы массива aArr
  7. Внутри цикла создается массив a размером от 1 до k и заполняется значениями от 1 до k
  8. В цикле от 1 до k в массиве bArr устанавливаются значения 1 для элементов, соответствующих элементам массива a
  9. Проверяется значение переменной check% и при его равенстве 1 вызывается подпрограмма printArr
  10. Выводится сообщение kol-vo combyn: и значение переменной j
  11. Если p равно 0, то выполняется выход из цикла
  12. Если p не равно 0, то выполняется перестановка элементов массива a
  13. Проверяется условие a(k) = n, если оно выполняется, то значение p уменьшается на 1, иначе значение p заменяется на k
  14. Завершение цикла
  15. Определение функции check%
  16. В цикле от 1 до n проверяется условие bArr(i) = 0
  17. Если условие выполняется, то проверяется условие aArr(i) > maxArr
  18. Если условие выполняется, то значение maxArr заменяется на aArr(i), иначе выполняется выход из функции
  19. Значение переменной check% устанавливается равным 1
  20. Завершение функции
  21. Определение подпрограммы printArr
  22. В цикле от 1 до n проверяется условие bArr(i) = 0
  23. Если условие выполняется, то выводится значение aArr(i)
  24. Завершение подпрограммы

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


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

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

7   голосов , оценка 3.571 из 5