DSA_CA2-v2.pdf

‫بسمه تعالی‬
‫ساختمان داده و الگوریتم‬
‫نیمسال دوم ‪۹۴-۹۳‬‬
‫دکتر بیگی‬
‫دانشکده مهندسی کامپیوتر‬
‫مهلت ارسال‪ 7 :‬اردیبهشت ‪۹۴‬‬
‫تمرین کامپیوتری دوم‬
‫نکات مهم‬
‫لطفاً به نکات زیر توجه فرمایید‪:‬‬
‫•‬
‫مهلت انجام این تمرین تا ‪ 7‬اردیبهشت ‪ ۹۴‬ا ست‪.‬‬
‫•‬
‫عالوه بر برنامههایی که نوشتهاید شما باید در یک سند متنی توضیحی برای راه حل خود برای هر مسئله ارائه کنید و در‬
‫آن ثابت کنید که راه حل شما به گونهای عمل میکند که خروجی مورد نیاز مسئله حاصل میشود ‪.‬این سند‬
‫متنی را در مهلت حل سوال به آدرس ‪ [email protected]‬بفرستید‪ .‬عنوان نامه شما باید به صورت‬
‫‪ CA2_LastName_StudentNumber‬باشد‪.‬‬
‫•‬
‫شما باید برنامه های خود را که به زبان ‪ C++‬نوشته شده است را در سامانه قاضی برنامه درس ساختمان داده و الگوریتم‬
‫شریف که در آدرس زیر قرار دارد وارد کنید و برنامه شما باید بتواند تمام آزمونهای تعیین شده را بگذراند ‪.‬‬
‫در غیر این صورت نمره کامل را دریافت نخواهید کرد‪.‬‬
‫آدرس سامانه قاضی برنامه‪:‬‬
‫‪http://judge.ce.sharif.ir/93-94-2/ce254-3/‬‬
‫•‬
‫در مجموع برای تمام تمرینهای عملی درس ‪ 11‬روز زمان تاخیر وجود دارد که میتوانید در تمرینها از این فرصت‬
‫اضافی نیز استفاده کنید و در صورت تاخیر بیشتر با تناسب به میزان آن از کل تمرینات به میزان خاصی نمره‬
‫کم خواهد شد )مثال به ازای هر روز ‪ ٪۵‬از کل نمره بخش تمرینات عملی کم میشود(‬
‫•‬
‫در صورت وجود ابهام در سواالت آن را با خانم مریم ربیعی در میان بگذارید‪.‬‬
‫‪1‬‬
‫بسمه تعالی‬
‫ساختمان داده و الگوریتم‬
‫نیمسال دوم ‪۹۴-۹۳‬‬
‫دکتر بیگی‬
‫دانشکده مهندسی کامپیوتر‬
‫مهلت ارسال‪ 7 :‬اردیبهشت ‪۹۴‬‬
‫تمرین کامپیوتری دوم‬
‫مسئله ‪ :1‬بادکنک ترکانی‬
‫یک مجموعه از ‪ n‬بادکنک داریم‪ .‬میخواهیم با کمترین تعداد تیر ممکن که همگی از مبدا پرتاب میشوند ‪،‬این بادکنکها را بترکانیم ‪ .‬هر‬
‫تیری که رها میشود در زاویه پرتاب شده به صورت مستقیم حرکت میکند و قدرت کافی برای ترکاندن تمامی بادکنکهای مسیر را دارد‪.‬‬
‫بادکنکها نیز همگی به شکل دایره هستند و از هر بادکنک مختصات مرکز آن و شعاع را در دست داریم‪.‬‬
‫تیرها فقط در جهت مثبت محور ‪ x‬رها میشوند‪ .‬اگر دو بادکنک مماس بر یکدیگر باشند ‪ ،‬تیر پرتابی به مماس آنها هردوی بادکنک ها را‬
‫میترکاند‪.‬‬
‫برنامهای بنویسید که با گرفتن تعداد بادکنکها در سطر اول و سپس مختصات مرکز و شعاع ‪ ،‬تعداد تیرهای الزم را چاپ کند‪.‬‬
‫محدودیت ها‪:‬‬
‫‪1 < n < 10^7‬‬
‫ورودی‪:‬‬
‫در خط اول ‪ n‬تعداد بادکنک ها و در ‪ n‬خط بعدی مختصات مرکز و شعاع بادکنکها‬
‫خروجی‪:‬‬
‫تعداد تیرهای الزم برا ترکاندن بادکنکها‬
‫نمونه ورودی‪:‬‬
‫‪5‬‬
‫‪2 2 1.5‬‬
‫‪331‬‬
‫‪1 9 1.2‬‬
‫‪4 -2 2‬‬
‫‪3 -5 3‬‬
‫‪2‬‬
‫بسمه تعالی‬
‫ساختمان داده و الگوریتم‬
‫نیمسال دوم ‪۹۴-۹۳‬‬
‫دکتر بیگی‬
‫دانشکده مهندسی کامپیوتر‬
‫مهلت ارسال‪ 7 :‬اردیبهشت ‪۹۴‬‬
‫تمرین کامپیوتری دوم‬
‫نمونه خروجی‬
‫‪34‬‬
‫‪3‬‬
‫بسمه تعالی‬
‫ساختمان داده و الگوریتم‬
‫نیمسال دوم ‪۹۴-۹۳‬‬
‫دکتر بیگی‬
‫دانشکده مهندسی کامپیوتر‬
‫مهلت ارسال‪ 7 :‬اردیبهشت ‪۹۴‬‬
‫تمرین کامپیوتری دوم‬
‫مسئله ‪ :‬مرتبسازی‬
‫قسمت اول‪:‬‬
‫یک لیست از ‪n‬عدد نامرتب داریم ‪ ،‬میخواهیم عنصری که در این لیست بیش از نصف طول لیست تکرار شده است را از روشی‬
‫مشابه ‪qui cksor t‬در صورت وجود بیابیم‪ .‬شما باید برنامه ای بنویسید که که این لیست اعداد را بگیرد و در خروجی اگر چنین‬
‫عنصری وجود داشت آن را چاپ کند و در غیر اینصورت ‪None‬چاپ شود‪.‬‬
‫ورودی‪:‬‬
‫در سطر اول تعداد اعداد و در سطر بعد لیست اعداد ورودی‬
‫محدودیت ها‪:‬‬
‫‪1 < n < 10^7‬‬
‫نمونه ورودی‪:‬‬
‫‪13‬‬
‫‪17 89 3 3 0 4 3 3 90 3 3 32 3‬‬
‫‪10‬‬
‫‪2 5 67 5 5 91 13 5 10 91‬‬
‫نمونه خروجی‪:‬‬
‫‪3‬‬
‫‪None‬‬
‫‪4‬‬
‫بسمه تعالی‬
‫ساختمان داده و الگوریتم‬
‫نیمسال دوم ‪۹۴-۹۳‬‬
‫دکتر بیگی‬
‫دانشکده مهندسی کامپیوتر‬
‫مهلت ارسال‪ 7 :‬اردیبهشت ‪۹۴‬‬
‫تمرین کامپیوتری دوم‬
‫قسمت دوم‪:‬‬
‫برنامه ای بنویسید که ‪n‬عدد را از ورودی دریافت کرده و به شیوه مرتبسازی سطلی با تقسیم بندی در ‪k‬سطل آنها را مرتب‬
‫نماید و محتویات سطلها را نمایش دهد‪ .‬اعداد صحیح هستند و ‪ k‬به صورت ورودی برنامه داده میشود‪.‬‬
‫اندازه سطلها را بر اساس گستره اعداد ورودی و تعداد سطلها باید بدست آورید‪.‬‬
‫ورودی‪:‬‬
‫در خط اول ‪ ،n‬تعداد اعداد و در خط بعد تعداد سطلها و در خط بعد لیست اعداد که در بازه اعداد‪ uni f or m‬توزیع شدهاند‪ ،‬میآیند‪.‬‬
‫ﺷﺮﻭوﻉع ﺑﺎﺯزﻩهﻫﮬﮪھﺎ ﺭرﺍا ﺍاﺯز ﺻﻔﺮ ﻓﺮﺽض ﮐﻨﻴﯿﺪ‪.‬‬
‫خروجی‪:‬‬
‫محتویات سطلها در سطر اول به این صورت که محتویات سطلهای پر را با ” |“جدا شوند چاپ کنید و لیست مرتب شده را در خط بعد‬
‫نمایش دهید ‪.‬بین هر عدد با عدد بعدی یا ” |“یک فاصله وجود دارد‪.‬‬
‫نمونه ورودی‪:‬‬
‫‪20‬‬
‫‪10‬‬
‫‪25 44 13 34 27 11 4 9 45 33 27 28 42 6 49 31 37 23 14 41‬‬
‫نمونه خروجی‬
‫‪4 | 9 6 | 13 11 14 | 23 | 25 27 27 28 | 34 33 31 | 37 | 44 42 41 | 45 49‬‬
‫‪4 6 9 11 13 14 23 25 27 27 28 31 33 34 37 41 42 44 45 49‬‬
‫‪5‬‬