В тоя код са нарушени сума конвенции на етичното писане на код

Да не казвам, че прилича сякаш някой си е правил гавра с теб. Но със сигурност не бих го приел, ако бях професор. Ще се огранича до основните забележки:
1) имената на променливите са като извадени от графата "абсолютно табу - не правете така" на някой учебник;
2) идентация липсва, както и разумна подреденост на кода (но да речем, че последното е по-скоро вкусова преференция)
3) кодът е изключително неприятен за проследяване в този си вид, което вероятно причинява и затрудняванията ти.
Можеше в един [code] таг да го сложиш, ама айде. Ще се опитам да ти олесня живота с нещо по-четливо, макар и с C++ да сме скарани отдавна...
Допускам, че повторение на цифри не е възможно и нулата не участва (тъй като входът ни е по-голям от нула).
За мен
нещо такова би било оптимално като алгоритъм, разбира се, се допускат леки изменения, като например начинът на пренос на вече обходените цифри (избрал съм string малко против конвенцията, но с оглед на оптималната употреба на памет), но идеята остава същата: Взимаме и валидираме входа, като са ни нужни две цифри от 1 до 9, като, разбира се, $r < n$, защото не можем да имаме например 5 цифрено число от 4 цифри без повторение. Започваме итерация, като обхождаме $r$ пъти всяка от цифрите от 1 до $n$ и добавяме към преносителя на вече обходената информация - string-ът $previous$. С негова помощ проверяваме и при всяка следваща итерация дали цифрата вече не се съдържа в нашето число. Другият ключов параметър на итериращата функция $loopDigits$ е и броят на оставащите цифри докрая - в началото стартираме с $r$ оставащи нужни цифри и след всяка добавена цифра инициираме същата функция, но вече с една цифра по-малко като брой. И така докато оставащата цифра не остане една (клаузата $digitsCount == 1$), което означава, че след като е преминала първата проверка, то тя е валидна цифра (т.е. не се съдържа) и можем вече да принтираме число - т.е. принтираме събраните досега цифри и накрая текущата, след което преминаваме към следващата в loop-а. Това е. Ако има нещо неясно, питай. Оставял съм бележки и по кода... Трябва да ти кажа обаче, че с $C++$ нещо хич не се харесваме и има възможност да не съм подбрал оптимален синтаксис или набор от способи (там можеш да си доразвиваш, ако имаш желание), но важна е идеята.
П.С.: Има го и естествено другия подход, където още първоначално си създаваме един едномерен integer масив с големина $n$ елемента и го пълним с всички цифри като $char$-ове и накрая пишем един итерационен алгоритъм на принципа "всяко с всички останали във всеки възможен ред", но е излишно играчка според мен, при положение че може да се изпипа и на по-функционален принцип отколкото обектен

П.П.С.:
system("pause") съм го добавил, за да е нагледен резултатът, принципно не е препоръчително, тъй като е чисто windows related трикче за паузиране на конзолата. Ако ще искаш да дебъгваш на друг OS, ще трябва да си сложиш я breakpoint, я някое изчакване за вход. Но там би трябвало да си наясно