HW4.pdf

‫تمرین سری چهارم درس مبانی برنامهسازی‬
‫مهلت ارسال‪ :‬سهشنبه یازدهم دیماه ‪۱۳۸۶‬‬
‫آیدین نصیریشرق )‪(aideen@gmail.com‬‬
‫فهرست‬
‫نحوه ارسال ‪1 ................................................................‬‬
‫آدرس ارسال ‪1 .............................................................‬‬
‫عنوان ایمیل ‪1 ..............................................................‬‬
‫پیوست ایمیل ‪2 .............................................................‬‬
‫مهلت ارسال ‪2 ..............................................................‬‬
‫نحوه نمرهدهی به برنامه ‪3 ........................................................‬‬
‫نکات آخر ‪3 ...............................................................‬‬
‫تمرین اول‪ :‬جمع اعداد خیلی بزرگ! )‪ ۳۰‬نمره( ‪4 ..............................................‬‬
‫تمرین دوم‪ :‬دنباله جادویی )‪ ۳۰‬نمره( ‪5 ...................................................‬‬
‫تمرین سوم‪ :‬کامبیز و برجهای هانوی! )‪ ۴۰‬نمره( ‪6 ..............................................‬‬
‫تمرین سری چهارم درس مبانی برنامهسازی‬
‫مهلت ارسال‪ :‬سهشنبه یازدهم دیماه ‪۱۳۸۶‬‬
‫نحوه ارسال‬
‫لطف ًا به موارد زیر در ارسال ایمیل پاسخهای خود دقت کنید‪ .‬بدیهیست که در صورت بروز هرگونه اشتباهی در این پروسه‪ ،‬نمره شما ممکن است اکیدًا‬
‫صفر بشود و اکیدًا هیچ اعتراضی در این زمینه پذیرفته نیست‪ .‬این اشتباهات شامل‬
‫•‬
‫ارسال ایمیل به هر آدرسی غیر از آدرس ذکر شده‬
‫•‬
‫درج عنوان اشتباه‬
‫•‬
‫نامگذاری نادرست فایلها )حتی اشتباه در نامگذاری حروف بزرگ و کوچک(‬
‫•‬
‫اشتباه در زیپکردن فایلها‪ ،‬نامگذاری نادرست فایل زیپ شده نهایی‪ ،‬اشتباه در ‪ attach‬کردن فایل زیپ‬
‫•‬
‫کامپایل نشدن برنامه توسط کامپایلر ‪) g++‬در ‪ MinGW‬یا ‪(DevCPP‬‬
‫•‬
‫خواندن و نوشتن اشتباه و زائد )هر گونه توضیح اضافه در خروجی یا قرار دادن )(‪ getchar‬در انتهای برنامه(‬
‫و موارد مشابه خواهد بود‪.‬‬
‫آدرس ارسال‬
‫برنامههای خود را‪ ،‬پس از تکمیل شدن و بررسی نکات ذیل بهصورت پیوست‪ 1‬به آدرس ‪ cpp8613hw@gmail.com‬ارسال کنید‪ .‬دقت کنید که بدنهی‬
‫ایمیل شما ممکنست به هیچوجه خوانده نشود‪ .‬پس از ارسال ایمیل‪ ،‬احتما ًال یک ایمیل از طرف ‪) Cpp Assistant‬همان آدرس فوق( به شما میآید‬
‫که مبنی بر دریافت ایمیل است‪.‬‬
‫توجه کنید که این آدرس ممکنست در طول مهلت ارسال توسط دستیاران درس چک نشود؛ پس اگر سؤال یا مشکلی داشتید‪ ،‬حتم ًا بهطور مستقیم با یکی‬
‫از دستیاران درس )ترجیح ًا ‪ ( aideen@gmail.com‬تماس بگیرید‪ .‬ضمن ًا از ارسال برنامههایتان توسط ایمیلی بهجز ایمیل شخصی خودتان‪ ،‬اکیدًا‬
‫خودداری کنید‪ .‬ایمیلهای خودتان را )حداقل( هر ‪ ۳‬روز یک بار چک کنید!‬
‫درصورتی که پس از فرستادن برنامههایتان )و پیش از اتمام موعد مقرّر( تصمیم به ارسال مجدد )و با تغییر( برنامههایتان گرفتید‪ ،‬ایمیل دیگری با همان‬
‫مشخصات و فرمتهای ایمیل قبلی به همان آدرس بزنید و در بدنهی ایمیل دلیل ارسال مجدد و تغییرات ایجاد شده را بنویسید‪ .‬دقت کنید در ایمیل‬
‫ممکنست کسری از نمره را از دست بدهید‪.‬‬
‫عنوان ایمیل‬
‫عنوان یا ‪ subject‬ایمیل شما باید به فرمت ‪ 86abcdef-4‬باشد که در آن به جای ‪ 86abcdef‬شماره دانشجوییتان را باید قرار دهید‪ .‬بهعنوان‬
‫مثال دانشجوی به شماره دانشجویی ‪ ۸۶۱۱۳۸۰۴‬باید عبارت ‪ 86113804-4‬را برای این سری از تمرینها )سری چهارم( انتخاب کند‪.‬‬
‫ال حذف شده و نمرهشان صفر شود‪.‬‬
‫دقت کنید که ممکنست ایمیلهای ارسالی که فرمت عنوان را رعایت نکرداند‪ ،‬کام ً‬
‫‪Attachment‬‬
‫تمرین سری چهارم درس مبانی برنامهسازی‬
‫جدید باید تمامی فایلها را عین ًا مانند ایمیل اوّلتان و عین ًا با همان فرمت‪ ،‬قرار دهید‪ .‬ضمن ًا درصورتیکه دلیلتان برای ارسال موجه نباشد‪،‬‬
‫‪1‬‬
‫‪1‬‬
‫پیوست ایمیل‬
‫ت‬
‫‪ P42.cpp‬و‬
‫های گفته شده )نظییر ‪p ،P41.cpp‬‬
‫های خود را با نام ی‬
‫برنامه ی‬
‫‪2‬‬
‫دلخواه ذخیره کنید‪ .‬سپپس با انتخاب‬
‫ه‬
‫‪ (P43‬نوشته و در یک پوشه‬
‫‪3.cpp‬‬
‫کلیک راست ماوس‪ ،‬از منوی‬
‫ک‬
‫تمامی ففایل و زدن‬
‫‪Compressed Folder‬‬
‫‪Sen‬‬
‫‪nd to‬‬
‫گزینهی‬
‫سؤالی از طرف‬
‫در صورت پرسیدن س‬
‫را انتخاب کرده و ر‬
‫بزنید‪.‬‬
‫ویندوز‪ ،‬گگزینهی ‪ No‬را د‬
‫یک فایل شبیه‬
‫نهایت ًا فایل ‪ zip‬ساخته شود توسط خود ویندوز را به ک‬
‫در آن ‪ abcdef‬ساییر ارقام شماره‬
‫‪ 86abcdef-4‬تغغییر نام دهید که ر‬
‫‪4.zip‬‬
‫ال دانشجوی به شماره دانشجویی ‪ ۸۶۱۱۱۳۸۰۴‬باید نام‬
‫دانشجویی شماست‪ .‬مث ً‬
‫ی‬
‫کنید که وجود‬
‫د‬
‫زیپشدهاش ‪ 86113804-4.zip‬باشد‪ .‬دقت‬
‫فایل پ‬
‫ده و اشتباه در نامگذاری فایل‪،‬‬
‫های اضافی غیر از ‪ ۳‬فایل خواستهشد‬
‫فایل ی‬
‫دن نمره بشود‪.‬‬
‫ست باعث کسر شد‬
‫ممکنس‬
‫ظیر ‪ (zip‬به طور‬
‫دقت کننید که ممکنست پسوند فایلها )نظ‬
‫فرض به شما نشان داده نشود و پس از تغییر نام فایل‪ ،‬به‬
‫پیش ض‬
‫طور خوددکار در انتهای نام شما )بدون اینکه ممتوجه شوید( درج‬
‫الف انتظار‪ ،‬نام واقعی فایل شما‬
‫شود! در اینصورت برخال‬
‫‪86113804-4.zip‬‬
‫‪p.zip‬‬
‫بود‪،‬‬
‫در‬
‫حالیکه‬
‫‪ 86113804-4‬ببه شما نمایش داده میشود! برای‬
‫‪4.zip‬‬
‫است منجر به صفر‬
‫جلوگیری از بروز این مشککل که ممکن ت‬
‫ی‬
‫شدن ننمره شما بشود‪ ،‬از منوی‬
‫‪Folder Option‬‬
‫‪T‬‬
‫‪Tools‬‬
‫باالیی‪ ،‬گزینهی‬
‫انتخاب کرده و سپس در پنجرهای که باز‬
‫ب‬
‫را‬
‫میشود‪ ،‬از قسمت‬
‫‪known file types‬‬
‫‪View‬‬
‫گزینهی‬
‫‪Hide extension‬‬
‫‪ns for‬‬
‫را )پاایینترین گزینهی قابل رؤیت!( غیر‬
‫نید )تیک آن را برددارید(‪ .‬اکنون میتووانید مطمئن باشد‬
‫فعال کنی‬
‫هستند که میبینید!‬
‫د‬
‫که نام فاایلها همانی‬
‫تمرین سری چهارم درس مبانی برنامهسازی‬
‫‪2‬‬
‫مهلت ارسال‬
‫ماه است‪ .‬پس از این تاریخ‪ ،‬شما ‪ ۲۴‬ساععت وقت دارید تا ببا کسر ‪ ۲۰٪‬از‬
‫مهلت شمما برای ارسال این تمارین ساعت ‪ ۲۳:۵۹۹:۵۹‬روز سهشنببه‪ ،‬یازدهم دی ه‬
‫اینترنت‪ ،‬داشتن تمرین‪ ،‬کووئیز و میانترم‬
‫‪،‬‬
‫شدن کارت‬
‫اینترنت خوابگاه‪ ،‬تمام ش‬
‫ت‬
‫سابی‪ ،‬تمارین خود را با تأخیر ارسال ککنید‪ .‬دالیلی نظیر ققطع بودن‬
‫نمره اکتس‬
‫نمیسازند‪.‬‬
‫فوت اقوام درجه ‪ ۲‬به باال و ‪ ...‬همگی غیرموجه بوده و هیچ ععذری را پذیرفته ی‬
‫ن‪ ،‬خواب ماندن‪ ،‬ت‬
‫های دیگر‪ ،‬فراموشی‪ ،‬ببرگشتن از شهرستان‬
‫درس ی‬
‫‪ Folder‬یا ‪Directory‬‬
‫‪2‬‬
‫نحوه نمرهدهی به برنامه‬
‫برنامههای خود را با نامهای خواسته شده ذخیره و آمادهسازی کنید و حتم ًا نام‪ ،‬نام خانوادگی و شماره دانشجویی خود را )با حروف انگلیسی(‬
‫باالی هر برنامه به صورت کامنت قرار دهید‪ .‬همچنین رویه اجرای برنامه و تمام متغیرها و توابع خود را با قرار دادن کامنتهای الزم حتم ًا خوانا و واضح‬
‫کنید‪ .‬تخطی از این موارد ممکنست باعث شود شما درصدی از نمره را از دست بدهید‪.‬‬
‫معیار نمرهدهی به برنامه صرفاً‪ ،‬صحّت عملکرد و سرعت اجرای برنامه میباشد‪ ،‬امّا خوانایی و وضوح کد اکیدًا توصیه میشود‪ .‬دقّت کنید که یک برنامهی‬
‫طوالنی ولی دقیق و کارا بسیار با اهمیتتر از یک برنامهی کثیف)!( و فشرده است‪.‬‬
‫در بعضی از برنامههای خواسته شده‪ ،‬محدودیتی برای ورودیها ذکر شده است‪ .‬با این محدودیتها و محاسبهی تعداد اعمال برنامهشما‪ ،‬و این فرض که در هر‬
‫ثانیه بین ‪ ۱۰۶‬تا ‪ ۱۰۹‬دستور توسط کامپیوتر انجام میشود‪ ،3‬شما میتوانید تقریبی از زمان اجرای برنامهی خود بهدست بیاورید‪.‬‬
‫به هر یک از برنامههای شما‪ ۱۰ ،‬ورودی مختلف داشته میشود و برنامهی شما باید در حداکثر ‪ ۱‬ثانیه )برای هر ورودی( پاسخ صحیح را ارائه داده و‬
‫به پایان برسد‪ ،‬در غیر اینصورت‪ ،‬نمرهی آن ورودی را نمیگیرید‪ .‬با این وصف‪ ،‬حلقهی زیر برای ‪۱, ۰۰۰, ۰۰۰, ۰۰۰‬‬
‫‪ ،‬بیشتر از ‪ ۱‬ثانیه طول‬
‫میکشد و نتیجت ًا الگوریتم مناسبی برای محاسبهی »باقیماندهی مجموع اعداد ‪ ۱‬تا ‪ n‬بر ‪ «۱۰۰۰‬نمیباشد!‬
‫;‪int sum = 0‬‬
‫)‪for (int i=0; i<n; i++‬‬
‫;‪sum = (sum + i) % 1000‬‬
‫بد نیست این کد را نوشته و ببینید حداکثر مقدار‬
‫که در حدود یک ثانیه کار به پایان میرسید‪ ،‬چه توانی از ‪ ۱۰‬است؟!‬
‫نکات آخر‬
‫پیش از ارسال برنامهها‪ ،‬یکبار دیگر به نکات زیر توجه کرده و آنها را در هر ‪ ۳‬برنامهی خود بررسی کنید‪.‬‬
‫•‬
‫از خواندن و نوشتن اضافی )نظیر نوشتن ‪ The result is: 10‬به جای ‪ 10‬و گذاشتن )(‪ getchar‬در پایان برنامه( بپرهیزید‪.‬‬
‫•‬
‫اسم برنامههایتان صحیح )بدون پسوند اضافه( باشد‪ .‬توجه کنید که ‪ P41.cpp‬با ‪) p41.cpp‬غلط( و ‪) P41.CPP‬غلط( متفاوت است!‬
‫•‬
‫نام و نام خانوادگی و توضیحات اضافی را بهصورت ‪ comment‬در برنامههایتان قرار داده باشد‪.‬‬
‫•‬
‫از دوستانتان و دستیاران درس کمک بگیرید ولی هرگز کُپ نزنید!‬
‫دقت کنید که رعایت نکردن هر یک از ‪ ۴‬نکتهی فوق ممکنست باعث از دست دادن تمام یا بخشی از نمرهی شود‪.‬‬
‫در صورت مشاهدهی کُپ یا کدی که توسط خود دانشجو نوشته نشده باشد‪ ،‬نمرهی فرد یا افراد خاطی )منجمله ُکپدهنده!( به ‪ -۱‬تبدیل خواهد شد‪ .‬در‬
‫صورتی که از شخص خاص کمک الگوریتمی گرفتهاید‪ ،‬حتم ًا این نکته را )نام فرد کمک گیرنده و توضیح کمک وی( بهصورت ‪ comment‬در ابتدای برنامهی‬
‫خود بنویسید‪.‬‬
‫تمرین سری چهارم درس مبانی برنامهسازی‬
‫‪ 3‬این اعداد به نوع کامپیوتر‪ ،‬نوع دستورات و موارد زیادی وابستهاند‪ ،‬اما به طور تقریبی صحیحاند‪.‬‬
‫‪3‬‬
‫تمرین اول ‪ :‬ج مع اعداد خیلی بزرگ ! ) ‪ ۳۰‬نمره (‬
‫برنامه شما برای این تمرین باید با نام ‪ P41.cpp‬نوشته و ذخیره شود‪.‬‬
‫برنامهای بنویسید که ابتدا یک عدد طبیعی‬
‫را از ورودی بخواند؛ سپس در سطر دوم ورودی‪،‬‬
‫عدد »خیلی بزرگ« خوانده و حاصل جمع این اعداد را در‬
‫خروجی بنویسد‪ .‬دقّت کنید که اعداد خیلی بزرگ ممکن است در هیچ یک از نوع‪4‬های متعارف جا نشود‪.‬‬
‫•‬
‫حداکثر مقدار ‪ ۱۰ ،‬بوده و هر یک از اعداد خیلی بزرگ نامنفی بوده و حداکثر ‪ ۱۰۰‬رقم خواهند داشت‪.‬‬
‫•‬
‫در سمت چپ هیچ عددی در ورودی صفر اضافی وجود ندارد )نظیر ‪ (۰۰۱۲‬و در خروجی نیز این نکته باید رعایت شود‪.‬‬
‫خروجی صحیح‬
‫مثال ورودی‬
‫‪1110‬‬
‫‪3‬‬
‫‪1000‬‬
‫‪100‬‬
‫‪10‬‬
‫مثال ورودی‬
‫‪2‬‬
‫‪1234567890123456789012345678901234567890‬‬
‫‪2011111111111111111111111111111111111112‬‬
‫خروجی صحیح‬
‫‪3245679001234567900123456790012345679002‬‬
‫تمرین سری چهارم درس مبانی برنامهسازی‬
‫‪Type‬‬
‫‪4‬‬
‫‪4‬‬
‫تمرین دوم ‪ :‬د نباله جادویی ) ‪ ۳۰‬نمره (‬
‫برنامه شما برای این تمرین باید با نام ‪ P42.cpp‬نوشته و ذخیره شود‪.‬‬
‫برنامهای بنویسید که عدد مثبت‬
‫آیا با اتصال یک جایگشت کامل از‬
‫و سپس‬
‫کلمهی حداکثر ‪ ۱۰‬حرفی را از ورودی بخواند‪ ،‬سپس یک جملهی دراز خوانده و نهایت ًا مشخص کند که‬
‫کلمه خوانده شده میتوان به آن جمله رسید یا نه؟ دقت کنید که هر یک از کلمات داده شده دقیق ًا یکبار باید در جمله‬
‫بهکار گرفته شود‪ .‬در صورتی که جایگشتی از کلمات‪ ،‬جمله را میسازد در خروجی ‪) YES‬با حروف بزرگ( و در غیر اینصورت ‪) NO‬با حروف بزرگ(‬
‫بنویسید‪.‬‬
‫حداکثر مقدار‬
‫برابر ‪ ۱۵‬است‪ .‬کلمات و همچنین جمله صرف ًا از حروف کوچک و بزرگ الفبای انگلیسی ساخته شدهاند و هیچ فاصلهای میان حروف‬
‫آنها نیست‪.‬‬
‫توجه کنید که بررسی تمام !‪ ۱۵‬حالت قرارگیری کلمات در کنار یکدیگر‪ ،‬ممکنست زمان بسیار زیادی طول بکشد؛ از این رو شاید بد نباشد انتخاب‬
‫کلمات اندکی هوشمندان شود‪ .‬برای مثال اگر کلمات صرف ًا ‪ ۱۵‬کلمهی یک حرفی ‪ a‬تا ‪ o‬بوده و جمله مورد نظر ‪ bcdefghijklmnoa‬باشد‪ ،‬نه تنها‬
‫تمام !‪ ۱۴‬جایگشتی که حرف اوّل آنها ‪ a‬است )نظیر ‪ (abcdefghijklmno‬بهدردنخور هستند؛ بلکه !‪ ۱۴‬جایگشتی که با ‪ c‬شروع میشوند‪۱۴! ،‬‬
‫جایگشتی که با ‪ d‬شروع میشوند و ‪ ...‬نیز لزومی ندارد بررسی شوند!‬
‫خروجی صحیح‬
‫مثال ورودی‬
‫‪YES‬‬
‫‪3‬‬
‫‪TheWay‬‬
‫‪Closed‬‬
‫‪is‬‬
‫‪TheWayisClosed‬‬
‫خروجی صحیح‬
‫مثال ورودی‬
‫‪NO‬‬
‫‪4‬‬
‫‪Ali‬‬
‫‪Is‬‬
‫‪MyName‬‬
‫‪MyNameIsAli‬‬
‫‪MyNameIsAliIsMyName‬‬
‫مثال ورودی‬
‫‪8‬‬
‫‪A‬‬
‫‪B‬‬
‫‪C‬‬
‫‪D‬‬
‫‪E‬‬
‫‪F‬‬
‫‪G‬‬
‫‪H‬‬
‫‪CDEFGHBA‬‬
‫‪YES‬‬
‫تمرین سری چهارم درس مبانی برنامهسازی‬
‫خروجی صحیح‬
‫‪5‬‬
‫تمرین سوم ‪ :‬کامبیز و ب رج های هانوی ! ) ‪ ۴۰‬نمره (‬
‫برنامه شما برای این تمرین باید با نام ‪ P43.cpp‬نوشته و ذخیره شود‪.‬‬
‫مسئله »برجهای هانوی« از سه میله با نامهای ‪ A‬و ‪ B‬و ‪ C‬تشکیل میشود که ‪ n‬عدد دیسک با قطرهای مختلف )و ارتفاعهای یکسان( در میلهها قرار دارند‪.‬‬
‫در ابتدای کار تمام دیسکها بهصورت مرتب شده بر اساس قطرشان )طوری که کمقطرترین دیسک باالترین و بزرگترین دیسک پایینترین باشد( روی‬
‫میلهی ‪ A‬قرار دارند‪.‬‬
‫یک حرکت »مجاز« در این مسئله برداشتن باالترین دیسک از یک میله )میله مبدأ( و قرار دادن آن در میلهای دیگر )میله مقصد( است بهطوری که هیچ گاه‬
‫یک دیسک روی دیسکی با قطر کوچکتر قرار نگیرد‪ .‬با این وصف‪ ،‬یک حرکت را میتوان با دو حرف بزرگ انگلیسی نمایش داد که حرف اوّل میله مبدأ و‬
‫حرف دوم میله مقصد است‪ .‬برای مثال حرکت ‪ AB‬یعنی برداشتن باالترین دیسک میله ‪ A‬و قرار دادن آن روی تمام دیسکهای میله ‪) B‬در صورت وجود(‪.‬‬
‫دقّت کنید که حرکت ‪ AB‬تنها زمانی مجاز است که میله ‪ A‬حداقل یک دیسک داشته باشد و بهعالوه یا میله ‪ B‬خالی باشد یا قطر باالترین دیسک میله ‪A‬‬
‫)که جابهجا میشود( از قطر باالترین دیسک میله ‪ B‬کمتر باشد‪.‬‬
‫با شروع از حالتی که تمام دیسکها بهصورت مرتب در میلهی ‪ A‬قرار دارند )نظیر شکل باال(‪ ،‬بازی هنگامی تمام میشود که یا تمام دیسکها به همین ترتیب‬
‫در میلهی ‪ B‬قرار بگیرند )و میلههای ‪ A‬و ‪ C‬خالی باشد( یا تمام دیسکها به همین ترتیب در میلهی ‪ C‬قرار بگیرند )و میلههای ‪ A‬و ‪ B‬خالی باشند(‪.‬‬
‫منوچهر برای حل کردن این معما‪ ،‬الگوریتم زیر را در پیش میگیرد‪ .‬او ابتدا یک جایگشت از تمام ‪ ۶‬حرکت موجود در نظر میگیرد )برای مثال جایگشت‬
‫‪ CA, AB, BC, BA, AC, CB‬از چپ به راست(‪ ،‬سپس در هر مرحله سمتچپترین حرکت مجاز از حرکات این جایگشت را انجام میدهد‪ .‬در عین‬
‫حال‪ ،‬او هیچوقت دوست ندارد یک دیسک را در دو حرکت متوالی جابهجا کند و از این رو اگر یک حرکت )بعد از حرکت اوّل( از مقصد حرکت بعدی آغاز‬
‫شود‪ ،‬او این حرکت را غیرمجاز تلقّی میکند‪ .‬برای مثال اگر همین جایگشت گفتهشده را روی میلههای شکل باال در نظر بگیریم‪ ،‬اوّلین حرکت منوچهر ‪AB‬‬
‫خواهد بود )چرا که ‪ CA‬بهدلیل خالی بودن میله ‪ C‬غیرمجاز است( و حرکت دوم او ‪ AC‬خواهد بود‪ CA :‬غیر مجاز است چون ‪ C‬هنوز خالی است؛ ‪ AB‬غیر‬
‫مجاز است چون دیسک با قطر ‪ ۲‬را نمیتوان روی دیسک با قطر ‪)۱‬که در حرکت اوّل به ‪ B‬منتقل شده( قرار داد؛ ‪ BC‬نیز غیرمجاز است چرا که دیسک‬
‫رویی ‪ B‬در حرکت قبل تکان خورده و منوچهر دوست ندارد یک دیسک را در ‪ ۲‬حرکت متوالی تکان بدهد‪ ،‬مشابه ًا ‪ BA‬نیز غیر مجاز است و از این رو‬
‫تمرین سری چهارم درس مبانی برنامهسازی‬
‫‪6‬‬
‫سمتچپترین حرکت مجاز ‪ AC‬است!‬
‫میتوان اثبات کرد که الگوریتم منوچهر همیشه پایان مییابد! آنچه از شما خواسته میشود اینست که با دانستن تعداد دیسکها و استراتژی منوچهر‬
‫)جایگشتی از ‪ ۶‬حرکت ممکن(‪ ،‬مشخص کنید که منوچهر چند جابهجایی انجام میدهد تا بازی تمام شود‪.‬‬
‫خط اوّل ورودی تنها یک عدد‬
‫را داشته و در خط دوم یک جایگشت از حرکات ممکن بهصورت ‪ ۶‬رشتهی دو حرفی )معتبر و دو به دو متمایز( داده‬
‫میشود‪ .‬بهازای هر تست ورودی‪ ،‬در یک سطر تعداد حرکاتی که منوچهر میکند را بنویسید‪.‬‬
‫میدانیم ‪۳۰‬‬
‫‪۱۸‬‬
‫‪ ۱‬و جواب خروجی هیچ تستی بیشتر از ‪ ۱۰‬نخواهد بود‪.‬‬
‫خروجی صحیح‬
‫مثال ورودی‬
‫‪7‬‬
‫‪3‬‬
‫‪AB BC CA BA CB AC‬‬
‫خروجی صحیح‬
‫مثال ورودی‬
‫‪2‬‬
‫‪AB BA CA BC CB AC‬‬
‫‪5‬‬
‫این سری از تمرینها‪ ،‬آخرین سری بوده و تنها شامل ‪ ۳‬سؤال است!‬
‫»موفق باشید!«‬
‫تمرین سری چهارم درس مبانی برنامهسازی‬
‫‪7‬‬