Сначала считаешь количество "мест" и составляешь массив возможных цифр: 0, 2, 9
Причём, для каждой цифры также нужно запомнить, сколько её повторять. В данном примере "2" можно повторить дважды.
Далее в цикле или рекурсией:
на первом месте может быть 0,2,9
на втором месте - уже зависит от первого места (если первое 0, то второе - 2,9, а если первое 2, то второе 0,2,9 и т.д.)
на третьем месте снова выбираешь из оставшихся.
Вот в таком порядке и сможешь вывести все перестановки.
Естественно, код приводить не буду, так как вопрос про алгоритм. Осталось написать в виде текста программы. Удачи)