نمایش نتایج 1 تا 5 از 5

نام تاپیک: محاسبه مجموع فاکتوریل تشکیل دهنده یک عدد

  1. #1
    کاربر دائمی آواتار zoghal
    تاریخ عضویت
    شهریور 1383
    محل زندگی
    همدان
    سن
    41
    پست
    401

    محاسبه مجموع فاکتوریل تشکیل دهنده یک عدد

    با سلام
    سوالی داشتم. که هر جور فکر کردم جواب درستی براش پیدا نکردم و نیار به یک راه حل درست دارم
    اما سوال میخواهم محاسبه کنم که عدید 31 از مجموعه چند فاکتوریل به دست اومده

    به این مثال توجه کنید
    31= 1*1! + 0*2! + 1*3! + 1*4!
    کد نتیجه محاسبه میشه
    31= 1+6+24

    لطفا من را اهنمایی نماید.ممنون

  2. #2
    کاربر دائمی آواتار BOB
    تاریخ عضویت
    خرداد 1383
    محل زندگی
    http://www.mshams.ir
    پست
    450
    سلام

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

    2. اگر ترتیب و تعداد مهم نباشد این یک مسئله بهینه سازی (مشابه کوله پشتی) میباشد.

  3. #3
    کاربر دائمی آواتار zoghal
    تاریخ عضویت
    شهریور 1383
    محل زندگی
    همدان
    سن
    41
    پست
    401
    با سلام

    ترتیب اصلا مهم نیست
    می شه یه روش رو بهم بگید

  4. #4
    کاربر دائمی آواتار reza.palang
    تاریخ عضویت
    دی 1385
    محل زندگی
    میون یهک جفت کروشه
    پست
    299
    با این مسئله توی سایت aachp.ir برخورد کردم. خیلی جالب بود.
    سوال، راه حل و سورس کد رو میذارم
    فایل های ضمیمه فایل های ضمیمه

  5. #5
    کاربر دائمی آواتار zoghal
    تاریخ عضویت
    شهریور 1383
    محل زندگی
    همدان
    سن
    41
    پست
    401
    اوه مرسی

    خیلی لطف کردید داشت رو مخم یواش یواش بریک میزدا

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •