Если отвечать с теоретической точки зрения, то следующий подход может быть субоптимальный:
1) сгенерировать все возможные сочетания цифр (1,2,3,4) из 7 элементов с повторениями (честно говоря, не до конца понял, есть ли ограничение в вашей задаче на количество повторений).
2) Для каждого из сочетаний применить Алгоритм Нарайаны (
https://ru.wikipedia.org/wiki/Алгоритм_Нарайаны) для генерации перестановок.