Теория
Перебор — метод решения задачи, при котором последовательно рассматриваются все кандидаты из заданного множества и для каждого проверяется условие. Подход применим, если множество конечно либо поиск можно ограничить конечными пределами. Корректность требует полноты: ни один допустимый вариант не должен быть пропущен. Одновременно важно исключить многократный подсчёт одного результата, если задача требует различных решений.
Разработка алгоритма начинается с определения кандидатов, границ и проверяемого условия. Затем выбирается способ накопления результата: вывести все подходящие значения, подсчитать их количество или сохранить лучшее. Эти задачи различаются, хотя используют один принцип перебора. Начальные значения счётчика и переменной результата должны соответствовать смыслу задачи.
Первый пример — подсчёт положительных делителей числа 12. Кандидатами являются целые числа от 1 до 12 включительно. Число d является делителем, если остаток от деления 12 на d равен нулю. Счётчик первоначально равен нулю и увеличивается только после успешной проверки.
count = 0
for d in range(1, n + 1):
if n % d == 0:
count += 1
print(count)
Программа выводит 6, поскольку подходят 1, 2, 3, 4, 6 и 12. Правая граница range не включается, поэтому записано n + 1. Нулевой кандидат исключён: операция остатка при делении на ноль не определена. Для общего варианта этой задачи предполагается натуральное n.
Второй пример — поиск неотрицательных целых x и y, для которых x + y = 10 и 2x + 3y = 26. Каждая переменная находится от 0 до 10. Два вложенных цикла перебирают 121 упорядоченную пару. Обе проверки соединяются логическим and, поскольку условия должны выполняться одновременно.