با سلام
سوالی داشتم. که هر جور فکر کردم جواب درستی براش پیدا نکردم و نیار به یک راه حل درست دارم
اما سوال میخواهم محاسبه کنم که عدید 31 از مجموعه چند فاکتوریل به دست اومده
به این مثال توجه کنید
31= 1*1! + 0*2! + 1*3! + 1*4!
کد نتیجه محاسبه میشه
31= 1+6+24
1. اگر به ترتیب از هر کدام از فاکتوریلها حداکثر 1 مورد میتوان داشت، برخی اعداد به این روش قابل ساخت نیستند. مثلا عدد 10 به هیچ شکل بدست نمی آید 1+2+6=9
اگر این مسئله اهمیتی نداشته باشه، مثل الگوریتمهای معمول تبدیل مبنا کار کرده و عدد را با استفاده از جمع دنباله پاسخهای فاکتوریلها بساز.
البته گاهی لازم میشه که به عقب برگشته و بعضی فاکتوریلها را نادیده بگیری (fact * 0) که در این مورد استفاده از BackTracking پیشنهاد میشود.
2. اگر ترتیب و تعداد مهم نباشد این یک مسئله بهینه سازی (مشابه کوله پشتی) میباشد.