DSA_project1.pdf

‫يا لطيف‬
‫پروژه اول داده ساختارھا و طراحی الگورﯾتم‬
‫مھندس فضلی‬
‫پروژه اول داده ساختارھا و طراحی الگورﯾتم‬
‫مسئله اول‪ :‬ماشين خودشمارﯾاب )‪(Self_counter‬‬
‫ماشينی دارﯾم که در آراﯾه ای به ساﯾز ‪ n‬از اعداد طبيعی می گيرد ‪ , , … ,‬و در ھر گام‬
‫ﯾک درخواست به صورت زﯾر بر روی آن اجرا می کند‪.‬‬
‫‪ .1‬در ھر در خواست دو عدد ‪ H‬و ‪ T‬به ماشين داده می شوند که ‪ H‬و ‪ T‬اعدادی به فرم ≤ ‪1‬‬
‫ ≤ ≤ می باشند‪ ،‬حال ماشين به ازای ھر درخواست تعداد ھاﯾی را در خروجی‬
‫چاپ می کند که دقيقا بار در بازه ‪ , , … ,‬ظاھر شده باشد‪.‬‬
‫خواسته ی ما از شما پياده سازی اﯾن ماشين می باشد‪.‬‬
‫فرمت ورودی‪:‬‬
‫در خط اول ورودی ‪ n‬ساﯾز آراﯾه و ‪ m‬تعداد درخواست ھا داده می شود‪ .‬در خط بعد آراﯾه‬
‫ ‪ , , … ,‬داده می شود که ھر ﯾک از ‪ 1 ≤ ≤ 10‬و در ھر ﯾک از ‪ m‬خط بعد ﯾک‬
‫درخواست به فرم گفته شده در باال بيان می شود‪.‬‬
‫فرمت خروجی‪:‬‬
‫به ازای ھر درخواست ﯾک عدد در خروجی چاپ کنيد که تعداد اعدادی باشد که در شرط گفته‬
‫شده در آن بازه صدق می کنند‪.‬‬
‫محدودﯾت ھا‪:‬‬
‫‪1 ≤ , ≤ 10‬‬
‫‪1 ≤ ≤ 10‬‬
‫!‪: 256‬‬
‫‪
: 4#$%#‬‬
‫نمونه‪:‬‬
‫‪Output 1:‬‬
‫‪3‬‬
‫‪1‬‬
‫‪Input 1:‬‬
‫‪7 2‬‬
‫‪3 1 2 2 3 3 7‬‬
‫‪1 7‬‬
‫‪3 4‬‬
‫‪2‬‬
‫‪2‬‬
‫‪Page‬‬
‫پروژه اول داده ساختارھا و طراحی الگورﯾتم‬
‫مسئله دوم‪ :‬ماشين دگرگون ساز )‪(Switcher‬‬
‫ماشينی دارﯾم که دنباله ای از ‪ 1‬و ‪ 2‬به نام ‪ S‬می گيرد و در ھر گام ﯾک درخواست به ﯾکی از‬
‫دو صورت زﯾر بر روی آن اجرا می شود‪.‬‬
‫‪ .2‬با وارد کردن دستور ”‪ “switch H T‬که ‪ H‬و ‪ T‬اعدادی به فرم |'| ≤ ≤ ≤ ‪ 1‬می باشند‪،‬‬
‫بازه ی بسته ی ‪ (H, T+‬تمام ‪ 1‬ھاﯾش را به ‪ 2‬و ‪ 2‬ھاﯾش را به ‪ 1‬تبدﯾل می کند‪.‬‬
‫‪ .3‬با وارد کردن دستور ”‪ “count‬طول بلندترﯾن زﯾر دنباله ی غير نزولی ‪ S‬را در خروجی چاپ‬
‫می کند‪.‬‬
‫حال ما از شما می خواھيم که اﯾن ماشين را پياده سازی کنيد‪.‬‬
‫فرمت ورودی‪:‬‬
‫در خط اول ورودی ‪ m‬تعداد درخواست ھا داده می شود‪ .‬در خط بعد دنباله ی ‪ S‬از ‪ 1‬و ‪ 2‬بيان‬
‫می شود و در ‪ m‬خط بعد ھر ﯾک از درخواست ھا به فرمت گفته شده در باال داده می شوند‪.‬‬
‫فرمت خروجی‪:‬‬
‫به ازای ھر درخواست ‪ count‬ﯾک عدد طبيعی در خروجی چاپ کند که طول بلندترﯾن زﯾر دنباله‬
‫ی غير نزولی ‪ S‬تا آن لحظه باشد‪.‬‬
‫محدودﯾت ھا‪:‬‬
‫‪1 ≤ |'| ≤ 10,‬‬
‫‪ ≤ 3 × 10,‬‬
‫!‪: 256‬‬
‫‪
: 4#$%#‬‬
‫نمونه‪:‬‬
‫‪Output 1:‬‬
‫‪2‬‬
‫‪1‬‬
‫‪Input 1:‬‬
‫‪3‬‬
‫‪12‬‬
‫‪count‬‬
‫‪switch 1 2‬‬
‫‪count‬‬
‫‪Output 2:‬‬
‫‪2‬‬
‫‪3‬‬
‫‪2‬‬
‫‪Input 2:‬‬
‫‪5‬‬
‫‪212‬‬
‫‪count‬‬
‫‪switch 1 1‬‬
‫‪count‬‬
‫‪switch 1 3‬‬
‫‪count‬‬
‫‪3‬‬
‫‪3‬‬
‫‪Page‬‬
‫پروژه اول داده ساختارھا و طراحی الگورﯾتم‬
‫توضيحات‪:‬‬
‫•‬
‫برای تست دوم مراحل تغيير رشته به صورت زﯾر می باشد‪) .‬عناصـر قرمـز شـده دنبالـه ی‬
‫خواسته شده توسط تابع ‪ count‬می باشد‪(.‬‬
‫‪212‬‬
‫‪112‬‬
‫‪112‬‬
‫‪221‬‬
‫‪221‬‬
‫•‬
‫•‬
‫نکات‬
‫‪2.‬‬
‫‪3.‬‬
‫‪4.‬‬
‫‪5.‬‬
‫‪6.‬‬
‫زﯾر دنباله ﯾک دنباله ‪ ،S‬دنباله ای است که از حذف صفر ﯾا تعداد بيشتری از عناصر ‪S‬‬
‫ساخته می شود‪.‬‬
‫به دنباله ای غير نزولی می گوﯾيم اگر ھر عنصر آن از عنصر قبلی کوچکتر نباشد‪.‬‬
‫اﯾمنی‪:‬‬
‫نحوه ی ارسال پاسخ ھا‪:‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫جاج بر روی آدرس ‪ acm.sharif.edu‬قرار دارد‪.‬‬
‫برای خودتان ﯾک حساب کاربری بسازﯾد ‪.‬حتما نامکاربری به صورت ‪ DADSXXXXXXXX‬باشد‬
‫که ‪ XXXXXXXX‬شماره دانشجوﯾی شماست‪.‬‬
‫پﺲ از وارد شدن‪ ،‬در نوار سمت راست گزﯾنهی فھرست در زﯾر محيط را کليک کرده و سپﺲ‬
‫به محيط ‪ DS_Projs_fazli_2013Spring‬وارد شوﯾد و جوابھاﯾتان را ارسال کنيد‪.‬‬
‫نمرهی ھر سوال ‪ ١٠٠٠‬امتياز است‪.‬‬
‫نمره دھی‪:‬‬
‫‪ .1‬در صورت عدم استفاده از توابع ‪ STL‬و ‪ Sort‬و ‪ Binary search‬در صورت نياز و پياده سازی دستی‬
‫آن ھا ‪ %20‬نمره ی اضافی به مسئله مربوطه تعلق می گيرد‪.‬‬
‫‪ .2‬در صورت مشاھده ھر گونه تقلب نمره ی کسب شده برای طرف ﯾا طرفين برابر منفی ‪%300‬‬
‫تمام نمره ی پروژه می باشد‪.‬‬
‫‪4‬‬
‫‪4‬‬
‫‪Page‬‬