سلام
یک سوال ACM هست ذهنم رو مشغول کرده نتونستم براش جواب پیدا کنم اگه هر کسی جوابی به ذهنش میرسه کمک کنه ممنون میشم
در ضمن کد نمی خوام کسی بده فقط یک راه حل بگه
لینک سوال
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من فکر میکنم این مساله یک راه حل بازشگشتی میشه براش پیدا کرد حالا پیاده سازیش میتونه به صورت پویا هم باشه
قضیه اینه که ما یک عدد از ورودی دریافت میکنیم مثلا 5 حالا باید یک دنباله بنویسیم که از 1 شروع میشه و به 5 ختم میشه
به طوری که هر عدد رو از دنباله انتخاب کنیم بشه با مجموع دو عدد از همون دنباله(دنباله صعودیه) ساخت
مثلا
1 2 4 5
4 = 2 + 2
یا 5 = 4 + 1
البته جواب یکتا نیست و دنباله های دیگه ی هم میشه نوشت که ما باید دنباله ی که کمترین طول رو داره به خروجی بدیم
باز همون کمترین طول ها هم میتونه چند حالت باشه که هر کودومش رو به خروجی بدیم قابل قبوله
مثلا برای 5 با همون طول قبلی این دنباله هم هست
1 2 3 5
من یک راه حل به ذهنم رسیده که برای عداد زوج جواب میده فقط
مثلا اگه 12 رو در ورودی داشته باشیم دنباله ی اون به این صورته که
میگیم 12 با نصف خودش ساخته میشه یعنی اگه 6 توی دنباله باشه حله!چون
12 = 6 + 6 همین راه حل رو بصورت بازگشتی ادامه میدیم برای 6 تا به 3 یا 4 برسیم!
دنباله اینطوری میشه
1 2 3 6 12
این راه حل برای عداد فرد جواب نمیده!
.gif)
HELP HELP HELP