المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:مرحله ی دوم:دوره ی ۲۴:سوالات ۲۳ تا ۲۵

سوالات ۲۳ تا ۲۵

جدولی $n \times n$ ($1 \lt n$) داریم که یک ربات در گوشه‌ی پایین چپ آن قرار دارد. این ربات یک برنامه دریافت کرده و آن را دستور به دستور اجرا می‌کند و هر بار پس از انجام آخرین دستور دوباره به دستور اول بازمی‌گردد و همین کار را تکرار می‌کند. دستورات این برنامه می‌تواند شامل چهار حرکت (بالا٬ پایین٬ چپ و راست) باشد که روبات در صورت امکان آن‌ها را انجام می‌دهد و در غیر این صورت (در صورتی که از جدول خارج شود و یا به خانه‌ی غیر مجاز هدایت شود) به سراغ دستور بعدی می‌رود. فرض کنید طول یک برنامه تعداد دستورهای آن است.

با توجه به توضیحات بالا به ۳ سوال زیر پاسخ دهید:

سوال ۲۳

جدول زیر را در نظر بگیرید. خانه‌های خاکستری غیر مجاز هستند. طول کوتاه‌ترین برنامه‌ای که ربات با اجرای آن حداقل یک بار به خانه‌ی هدف (انتهای مسیر سفید) می‌رسد٬ چند است؟

  1. ۱۸
  2. ۲۵
  3. ۲۳
  4. ۲۰
  5. ۲۱

پاسخ

گزینه (۴) درست است.

در هر بار اجرای برنامه (در حالت کمینه) مجموعا حرکتی به سمت راست و بالا داریم. در هنگام رسیدن به خانه‌ی بالا راست، باید حداقل ۴ حرکت به چپ و هم‌چنین ۵ حرکت به پایین داشته باشیم وگرنه در یک بار اجرای برنامه در همان نقطه خواهیم ماند. پس حداقل نیاز به ۲۰ حرکت داریم. برنامه ی زیر با طول ۲۰ خط ربات را به هدف می‌رساند: ۵ راست، ۶ بالا، ۴ چپ، ۵ پایین.

سوال ۲۴

فرض کنید تمام خانه‌های جدول مجاز هستند. می‌خواهیم برنامه‌ای به ربات دهیم تا تمامی خانه‌های جدول را حداقل یک‌ بار بپیماید (مهم نیست ربات در انتها در کدام خانه‌ است). طول کوتاه‌ترین برنامه با این هدف برای $n=۱۰$ چند است؟

  1. ۱۹
  2. ۱۱
  3. ۹
  4. ۱۰
  5. ۱۵

پاسخ

گزینه (۱) درست است.

به طور کلی برای جدول $n\times n$، $2n-1$ حرکت کم‌ترین حرکت لازم است. در صورتی که در یکی از جهت‌ها $n-1$ حرکت نداشته باشیم، پس از اجرای یک بار برنامه هر دو گوشه‌ی جدول خالی هستند و ما جابجا شده‌ایم. بدین ترتیب با توجه به این‌که در نهایت به کدام سمت رفته باشیم یکی از گوشه‌ها خالی خواهند ماند. در نتیجه باید در یکی از جهت‌ها $n-1$ حرکت داشته باشیم و اگر در جهت عکس آن کم‌تر حرکت داشته باشیم همچنان یک سطر یا ستون خالی خواهد ماند. پس در کل $2n-2$ حرکت خواهیم داشت که برای این‌که بتوانیم تمامی جدول را پیمایش کنیم باید در یک جهت دیگ حداقل یک حرکت داشته باشیم که برابر $2n-1$ می‌شود. با روش زیر نیز می‌توان با این تعداد حرکت به جواب رسید: $n-1$ راست، $n-1$ چپ و ۱ بالا.

سوال ۲۵

خانه‌ای را در جدول خوب می‌نامیم که اگر تنها آن خانه غیر مجاز باشد٬ برنامه‌ای به طول حداکثر $n$۳ وجود داشته باشد که تمام خانه‌های مجاز را بپیماید. برای $n=۷$ چند خانه‌ی خوب در جدول وجود دارد؟ (خانه‌ی محل استقرار ربات یعنی خانه‌ی گوشه‌ی چپ پایین خوب نیست.)

  1. ۴۸
  2. ۲۲
  3. ۲۳
  4. ۴۳
  5. ۱۱

پاسخ

گزینه (۱) درست است. به طور کلی برای هر جدولی، تمامی خانه‌ها خوب هستند. فرض کنید خانه‌ای که می‌خواهیم ثابت کنیم خوب است، در ستون $k$ ام جدول قرار داشته باشد. در این صورت برنامه‌ی زیر تمام خانه‌ها به جز این خانه را طی می‌کند: $k$ راست، ۱ بالا، $n-k$ راست، ۱ پایین، $n-k$ چپ، ۱ بالا، $k$ چپ.


ابزار صفحه