تالار گفتمان مانشت
تست ۴۰ ساختمان داده it سال۸۸ - نسخه‌ی قابل چاپ

تست ۴۰ ساختمان داده it سال۸۸ - Aurora - 19 مرداد ۱۳۹۰ ۰۸:۱۴ ب.ظ

کسی می تونه کمک کنه؟ جواب این تست چی میشهHuh

RE: تست ۴۰ ساختمان داده it سال۸۸ - summer_66 - 19 مرداد ۱۳۹۰ ۰۹:۵۱ ب.ظ

جواب ۹۷۷ میشه.
شما این قطعه کد رو به صورت غیر بازگشتی باز نویسی کنید و order دقیق اجراش رو بدست بیارید همون order فرمولی هست که باید ۱۰۰۰ رو درش جایگذاری کنید.اگه متوجه نشدید بگید.

تست ۴۰ ساختمان داده it سال۸۸ - hadi_m - 19 مرداد ۱۳۹۰ ۱۱:۴۷ ب.ظ

با سلاام
خب این مسئله باحال همون مسئله ژزفوس خودمونه که مقدار k در ایم مسئله برابر با ۲ هست
داستان رو به شکلهای مختلف روایت میکنن اما مسئله به این شکله که تعدادی ادم کنار هم حلقه وار قرار میگیرند و به اندازه k حرکت میکنند و نوبت به هر کس که رسید باید خودش رو بکشه واین روند همچنان ادامه پیدا میکنه که یه نفر تنها بیشتر باقی نمی مونه.
عنوان شده این حکایت مربوط به گروهی از یهودیان بوده که در غاری گرفتار شدنند واز ترس المانها تصمیم به این کار میگیرند ورئیس گروه که نمیخواسته خودکشی کنه این مسئله رو عنوان میکنه.
خب از جزئیات مسئله بگذریم که جزئیات کامل در لینک زیر موجود هستش‌:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


برای این مسئله راه حلهای متفاوتی اراه شده و همچنین فرمولهای گوناگون و order این مسئله (n) میباشد.
اما راه حل این مسئله به ساده ترین بیان:
ابتدا مقدار n را بصورت باینری بنوسید و یک بیت انرا rotate به چپ بدهید و عدد حاصله همان جواب هست
یعنی ۱۰۰۰ (۱۱۱۱۱۰۱۰۰۰ )
بعد از یک بیت rotate to left داریم
۱۱۱۱۰۱۰۰۰۱ که برابر با ۹۷۷ هستش .
در ضمن اگر دقت کنید میبینید که در دور اول اعداد زوج حذف میشود .بنابراین گزینه اخر اشتباه است .

RE: تست ۴۰ ساختمان داده it سال۸۸ - so@ - 05 آذر ۱۳۹۳ ۰۶:۳۹ ب.ظ

میخاستم بدونم همیشه ۱بار چرخش ب چپو اعمال میکنیم یا به تعداد next های گره L ربط داره؟

RE: تست ۴۰ ساختمان داده it سال۸۸ - ziba.O - 05 آذر ۱۳۹۳ ۰۶:۴۳ ب.ظ

(۰۵ آذر ۱۳۹۳ ۰۶:۳۹ ب.ظ)monji_421 نوشته شده توسط:  میخاستم بدونم همیشه ۱بار چرخش ب چپو اعمال میکنیم یا به تعداد next های گره L ربط داره؟
آره همیشه یه بار به چپ چرخش میدیم. فقط اگه نود شروع یک نباشه و یه نود دیگه ای باشه به میزان اختلاف اون نود با یک به مقدار نهایی اضافه میکنیم.