المپدیا

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

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۱۶:برنامه نویسی:سوال ۳

سوال ۳

تابع Becharkhun‎ یک آرایه یک بعدی از نوع int، تعداد عناصر ذخیره شده در آرایه هم‌چنین یک اندیس از این آرایه را به‌عنوان ورودی می‌گیرد و عناصر آرایه را حول اندیس داده شده دوران می‌دهد. مثلاً فرض کنید که آرایه‌ی ‎$a=\{1‎, ‎4‎, ‎5‎, ‎3‎, ‎6‎, ‎7\}$‎ را داریم اگر تابع را به این صورت صدا بزنیم: ‎Becharkhun(a‎, ‎6‎, ‎3)‎ آرایه‌ی ‎a‎ به‌صورت زیر تغییر می‌کند:

‎$$\{3‎, ‎6‎, ‎7‎, ‎1‎, ‎4‎, ‎5\}$$

‎ حال اگر یک بار دیگر تابع را به این صورت صدا بزنیم ‎ ،Becharkhun(a‎, ‎5‎, ‎1)‎‎ ‎$a$ به صورت زیر می‌شود:

‎$$\{4,3‎, ‎6‎, ‎7‎, ‎1‎, ‎5\}$$.

‎ شما بایستی این تابع را در ‎$O(n)$‎ پیاده سازی کنید که ‎$n$‎ تعداد عناصر آرایه‌ای است که بعنوان ورودی داده شده است. در ضمن شما می‌توانید از حافظه‌ی اضافی از ‎$O(1)$‎ استفاده کنید. شما نمی‌توانید از متغیّرها یا آرایه‌های Global‎ استفاده کنید‎.

‎راهنمایی‎:‎ تعریف کردن و استفاده از تابع ‎reverse‎ برای وارون کردن ترتیب عناصر یک آرایه ممکن است برایتان سودمند باشد.


ابزار صفحه