برای الگوریتم میتونم یه کمکی بکنم.
قدم اول پیدا کردن تعداده که میتونی از فرمول زیر استفاده کنی:
n: number of characters
s = n!/1!*(n-1)! + n!/(2!*(n-2)!)+ ...+n!/(n!*1!)
به ترتیب کارکتر های با طول 1 تا n
حالا دو آرایه به طول n و s تعریف کن با یه حلقه میتونی جواب رو تو آرایه دوم ذخیره کنی
الان کدش به ذهنم نمی رسه ولی اصولش اینه
کاراکتر 1 تا n رو ذخیره کن --------> رشته با طول یک
کاراکتر1 رو با کاراکتر های 2 تا n رو کنار هم بذار، کاراکتر 2 رو با کاراکتر های 3 تا n رو کنار هم بذار، ......، کاراکتر n-1 رو با کاراکتر n رو کنار هم بذار ---------> رشته با طول دو
.
.
.
.
n کاراکتر رو کنار هم بذار ----------> رشته با طول n