Теория
Полный перебор проверяет все допустимые варианты
Перебор надёжен, когда пространство вариантов конечно и достаточно мало. Сначала программа порождает каждый кандидат, затем проверяет ограничения и только после этого учитывает подходящий результат.
Корректность зависит от двух частей: диапазон не должен терять возможный ответ, а условие не должно принимать запрещённый.
solutions = []for number in range(1, 21): if number % 4 == 0 and number % 6 == 0: solutions.append(number)Как доказывается полнота
Перед запуском назовите первый и последний кандидат и объясните, почему за границами ответа быть не может. Затем проверьте условие на подходящем и почти подходящем варианте.
Если задача ищет пары, вложенные циклы порождают декартово множество сочетаний. Дополнительное условие может убрать равные или зеркальные пары.
- Внешний цикл выбирает a, внутренний перебирает все b.
- Условие оставляет пары (1,2), (1,3) и (2,3).
- Каждая допустимая пара встречается один раз; равные и обратные пары исключены.
Найденный пример ещё не доказывает полноту
Программа может обнаружить один подходящий вариант и всё же пропустить лучший или требуемое количество решений, если диапазон выбран слишком узко.
Как строить перебор
Отделите генерацию кандидатов от проверки. Сначала убедитесь, что range или коллекция покрывает пространство, затем выразите ограничения как проверяемое условие.
- Что является кандидатом? Число, строка, пара или другая конечная конструкция.
- Каковы границы? Докажите включение первого и последнего возможного ответа.
- Как проверяется допустимость? Соберите условие из независимых ограничений.
- Что сохраняется? Количество, список, первый или лучший подходящий результат.
Практика
Задайте пространство вариантов
Подходящие варианты — 3, 6 и 9. Их три.
Найдите подходящий вариант
В заданном диапазоне условие выполняется при x = 5.
Посчитайте решения
Подходят 2, 4, 6 и 8 — всего четыре варианта.
Проследите вложенный перебор
Подходят ровно три упорядоченные пары. Остальные либо равны, либо идут в обратном порядке.
Найдите первое общее кратное
Первое число с двумя нулевыми остатками — 12. Число 12 делится на 4 и на 6.
Итог
Теперь вы можете задать конечный перебор, проверить варианты и объяснить, почему ответ не потерян.
Выберите числа от 1 до 30, найдите удовлетворяющие двум условиям и сначала вручную проверьте границы и один отклонённый кандидат.
Прогресс
0 / 5Вы ещё не решали задания