DAS_project2.pdf

‫يا لطيف‬
‫پروژه دوم داده ساختارھا و طراحی الگورﯾتم‬
‫مھندس فضلی‬
‫پروژه دوم داده ساختارھا و طراحی الگورﯾتم‬
‫مسئله اول‪ :‬وزنه ھای عجيب )‪(Scale‬‬
‫ﯾک ترازوی دو کفه ای دارﯾم که به وسيله ی آن ﯾک شی به وزن ‪ W‬گرم را می خواھيم وزن‬
‫کنيم‪ .‬از ھر کدام از وزنه ھای به وزن ‪ 3‬گرم که ≤ ‪ 0‬دقيقا ﯾک عدد موجودی دارﯾم‪ ،‬حال از‬
‫شما می خواھيم که با استفاده از تعدادی از اﯾن وزنه ھا و گذاشتن آن در ھر ﯾک از دو کفه‪،‬‬
‫باعث تعادل ترازو شوﯾد‪.‬‬
‫فرمت ورودی‪:‬‬
‫در ﯾک خط عدد ‪ W‬داده می شود‪.‬‬
‫فرمت خروجی‪:‬‬
‫در خط اول تعداد وزنه ھای مورد استفاده و به ازای ھر خط ﯾکی از وزنه ھا را به ترتيب صعودی‬
‫در خروجی چاپ کنيد و در صورتی که جوابی وجود نداشت "‪ " − 1‬چاپ کنيد‪) .‬توجه کنيد که‬
‫پاسخ ﯾکتا می باشد‪(.‬‬
‫محدودﯾت ھا‪:‬‬
‫‪1 ≤ ≤ 10‬‬
‫‪: 256‬‬
‫‪:1‬‬
‫نمونه‪:‬‬
‫‪Output 1:‬‬
‫‪٣‬‬
‫‪-3‬‬
‫‪-1‬‬
‫‪27‬‬
‫‪Input 1:‬‬
‫‪2٣‬‬
‫مسئله دوم‪ :‬گراف وزن دار جھت دار )‪(Graph‬‬
‫ﯾک گراف وزن دار جھت دار با ‪ N‬راس و ‪ M‬ﯾال دارﯾم که ﯾال ام آن که وزن ‪ W‬دارد با رنگ ‪،‬‬
‫رنگاميزی شده است‪ .‬می خواھيم کم وزن ترﯾن مسير از راس اول به راس آخر را در آن پيدا‬
‫کنيم با اﯾن شرط که در مسيرمان ھيچ دو ﯾال متوالی ای ھم رنگ نباشند‪.‬‬
‫‪2‬‬
‫‪2‬‬
‫‪Page‬‬
‫پروژه دوم داده ساختارھا و طراحی الگورﯾتم‬
‫فرمت ورودی‪:‬‬
‫در خط اول ورودی دو عدد ‪ N‬و ‪ M‬داده می شود ‪ .‬در ‪ M‬خط بعدی به ازای ھر خط ﯾک‬
‫چھارتاﯾی ‪ ! , # , ,‬داده می شود که توصيف ﯾکی از ﯾال ھا می باشد که به ترتيب‬
‫راس مبدا‪ # ،‬راس مقصد‪ C ،‬رنگ و ‪ W‬وزن آن می باشد‪.‬‬
‫‪$‬‬
‫فرمت خروجی‪:‬‬
‫در خروجی وزن کم وزن ترﯾن مسير از راس ‪ ١‬به راس ‪ N‬را چاپ کنيد و اگر چنين مسيری وجود‬
‫نداشت "‪ " − 1‬چاپ کنيد‪.‬‬
‫محدودﯾت ھا‪:‬‬
‫‪2 ≤ N ≤ 100‬‬
‫&‪ ≤ 10‬‬
‫‪1 ≤ , ≤ 4‬‬
‫‪: 256‬‬
‫‪: 1‬‬
‫نمونه‪:‬‬
‫‪Output 1:‬‬
‫‪-1‬‬
‫‪Input 1:‬‬
‫‪3 2‬‬
‫‪1 2 1 4‬‬
‫‪2 3 1 3‬‬
‫‪Output 2:‬‬
‫‪6‬‬
‫‪Input‬‬
‫‪4 4‬‬
‫‪1 2 2‬‬
‫‪2 3 1‬‬
‫‪3 4 3‬‬
‫‪2 4 2‬‬
‫‪2:‬‬
‫‪2‬‬
‫‪2‬‬
‫‪2‬‬
‫‪2‬‬
‫مسئله سوم‪ :‬مربع )‪(Rectangle‬‬
‫ﯾک آراﯾه دو بعدی ( × ( از ‪ ٠‬و ‪ ١‬دارﯾم که ‪ ٠‬نشان گر خانه ھای خالی و ‪ ١‬نشان دھنده ی‬
‫خانه ھای پر می باشد‪ .‬حال ما می خواھيم بزرگترﯾن زﯾرمربعی را که تمام خانه ھاﯾش خالی‬
‫باشد بيابيم‪.‬‬
‫فرمت ورودی‪:‬‬
‫در خط اول ورودی عدد ‪ N‬داده شده است و در ‪ N‬خط بعد در ھر کدام ‪ N‬عدد ‪ ٠‬ﯾا ‪ ١‬می آﯾد که‬
‫نشان دھنده ی پر ﯾا خالی بودن آن خانه می باشد‪.‬‬
‫‪3‬‬
‫‪3‬‬
‫‪Page‬‬
‫پروژه دوم داده ساختارھا و طراحی الگورﯾتم‬
‫فرمت خروجی‪:‬‬
‫در ﯾک خط طول ضلع بزرگترﯾن مربعی را که تمام خانه ھاﯾش ‪ ٠‬باشد را چاپ کنيد‪.‬‬
‫محدودﯾت ھا‪:‬‬
‫*‪1 ≤ ( ≤ 10‬‬
‫‪: 256‬‬
‫‪: 1‬‬
‫نمونه‪:‬‬
‫‪Output 1:‬‬
‫‪3‬‬
‫‪1:‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪Input‬‬
‫‪4‬‬
‫‪1 1 1‬‬
‫‪0 0 0‬‬
‫‪0 0 0‬‬
‫‪1 0 0‬‬
‫مسئله چھارم‪ :‬مکعب )‪(Cube‬‬
‫)اﯾن سوال امتيازی می باشد و ‪ %١٠‬نمره ی کل پروژه نمره اضافی دارد‪(.‬‬
‫ﯾک آراﯾه سه بعدی ( × ( × ( از ‪ ٠‬و ‪ ١‬دارﯾم که ‪ ٠‬نشان گر خانه ھای خالی و ‪ ١‬نشان‬
‫دھنده ی خانه ھای پر می باشد‪ .‬حال ما می خواھيم بزرگترﯾن زﯾرمکعبی را که تمام خانه‬
‫ھاﯾش خالی باشد بيابيم‪.‬‬
‫فرمت ورودی‪:‬‬
‫در خط اول ورودی عدد ‪ N‬داده شده است و در ‪ N‬بلوک ‪ N‬خطی که با ﯾک فاصله از ھم جدا‬
‫شده اند ‪ N‬عدد ‪ ٠‬ﯾا ‪ ١‬می آﯾد که نشان دھنده ی پر ﯾا خالی بودن آن خانه می باشد‪.‬‬
‫فرمت خروجی‪:‬‬
‫در ﯾک خط طول ضلع بزرگترﯾن مکعبی را که تمام خانه ھاﯾش ‪ ٠‬باشد را چاپ کنيد‪.‬‬
‫محدودﯾت ھا‪:‬‬
‫‪Page‬‬
‫‪4‬‬
‫‪1 ≤ ( ≤ 50‬‬
‫‪: 256‬‬
‫‪: 1‬‬
‫‪4‬‬
‫پروژه دوم داده ساختارھا و طراحی الگورﯾتم‬
‫‪5‬‬
‫نمونه‪:‬‬
‫‪Output 1:‬‬
‫‪3‬‬
‫‪1:‬‬
‫‪Input‬‬
‫‪4‬‬
‫‪1 0 0‬‬
‫‪0 0 0‬‬
‫‪0 0 0‬‬
‫‪1 0 0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫مسئله پنجم‪ :‬شبيه ساز )‪(Simulator‬‬
‫ﯾک برنامه شبيه ساز مدار طراحی کرده اﯾم ولی مشکل بزرگی بر سر راه ماست و آن اﯾن‬
‫است که سيم ھا به نحو خوبی به صورت خودکار نماﯾش داده نمی شوند‪ .‬برای اﯾن کار از‬
‫شما کمک می خواھيم‪.‬‬
‫برنامه به اﯾن صورت است که ﯾک آراﯾه دو بعدی × ( در ابتدا داده شده است که برد ما‬
‫می باشد و تعدادی از خانه ھای آن توسط قطعات مدار پر شده اند که آن ھا را با ‪ ١‬نشان‬
‫داده اﯾم و بقيه خانه ھا خالی می باشند که با ‪ ٠‬نشان داده شده اند‪ .‬حال می خواھيم ‪K‬‬
‫عدد سيم بين ‪ K‬جفت نقاط خالی با مختصات 〉 ‪ 〈,- .-‬و 〉 ‪ 〈,0 .0‬بکشيم با اﯾن شرط که از خانه‬
‫ھای ‪ ١‬عبور نکنيم‪) ،‬توجه کنيد که عبور کردن سيم ھا از روی ﯾکدﯾگر اشکالی ندارد‪ (.‬با اﯾن‬
‫شرط که مجموع طول سيم ھا در گام نخست و در صورت برابر بودن مجموع طول مجموع‬
‫شکست ھای ھر سيم جھت افزاﯾش زﯾباﯾی مدار کمينه شود‪.‬‬
‫فرمت ورودی‪:‬‬
‫‪Page‬‬
‫‪5‬‬
‫در خط اول ورودی ‪1‬وو( به ترتيب داده شده اند‪ .‬در ‪ N‬خط بعد در ھر خط ‪ M‬عدد ‪ ٠‬ﯾا ‪١‬‬
‫قرار گرفته اند که توصيف برد اوليه می باشد‪ .‬سپس در ‪ K‬خط بعد در ھر خط ﯾک چھارتاﯾی‬
‫〉 ‪ 〈,- .-‬و 〉 ‪ 〈,0 .0‬داده شده که توصيف نقاط ابتداﯾی و انتھاﯾی ھر ﯾک از سيم ھا می باشد‪.‬‬
‫پروژه دوم داده ساختارھا و طراحی الگورﯾتم‬
‫فرمت خروجی‪:‬‬
‫به ازای ورودی دو عدد که اولی کمينه ی مجموع طول سيم ھا و دومی کمينه ی مجموع‬
‫شکست سيم ھا می باشد را در ﯾک خط چاپ کنيد‪ .‬در صورتی که سيمی وجود داشت که‬
‫دو سر آن قابل اتصال به ﯾکدﯾگر نبودند به جای خروجی باال "‪ " − 1‬چاپ کنيد‪.‬‬
‫محدودﯾت ھا‪:‬‬
‫‪1 ≤ , ( ≤ 200‬‬
‫‪1 ≤ 20‬‬
‫( ≤ ‪1 ≤ ,2‬‬
‫ ≤ ‪1 ≤ .2‬‬
‫‪: 256‬‬
‫‪: 1‬‬
‫نمونه‪:‬‬
‫‪1:‬‬
‫‪Output 1:‬‬
‫‪11 3‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪4‬‬
‫‪6‬‬
‫‪Input‬‬
‫‪5 6 2‬‬
‫‪0 0 0‬‬
‫‪0 1 1‬‬
‫‪0 1 1‬‬
‫‪0 0 0‬‬
‫‪0 0 0‬‬
‫‪2 1 2‬‬
‫‪5 4 3‬‬
‫توضيحات‪:‬‬
‫داﯾره ھای قرمز رنگ دو طرف سيم ھا می باشند و بلوک ھای مشکی خانه ھای ‪ ١‬و بلوک ھای‬
‫سفيد خانه ھای ‪ 0‬می باشند و ھمچنين نقاط شکست سيم ھا با داﯾره ھای زرد رنگ مشخص‬
‫شده اند‪.‬‬
‫‪6‬‬
‫‪6‬‬
‫‪Page‬‬
‫پروژه دوم داده ساختارھا و طراحی الگورﯾتم‬
‫مسئله ششم‪ :‬شبيه ساز کامل )‪(Perfect_simulator‬‬
‫)اﯾن سوال امتيازی می باشد و ‪ %٢٠‬نمره ی کل پروژه نمره اضافی دارد‪(.‬‬
‫مانند مسئله قبل می خواھيم شبيه ساز مدار طراحی کنيم با اﯾن تفاوت که در اﯾن قسمت‬
‫سيم ھا نمی توانند از روی ﯾکدﯾگر به صورتی موازی عبور کنند و فقط می توانند ﯾکدﯾگر را به‬
‫صورتی عمود بر ھم قطع کنند و البته کامال کمينه بودن طول سيم ھا و تعداد شکست ھا در‬
‫اولوﯾت نيست و اگر به طور نسبی ھم کمينه باشد به صورت چشمی خروجی تان مورد‬
‫بررسی قرار خواھد گرفت و مقدار خوبی از نمره را کسب خواھيد کرد‪ .‬ھمچنين از شما می‬
‫خواھيم نمای کلی سيم ھا و دﯾگر اجزای مدار را نيز به صورت خيلی ابتداﯾی نشان دھيد‪.‬‬
‫فرمت ورودی‪:‬‬
‫در خط اول ورودی ‪1‬وو( به ترتيب داده شده اند‪ .‬در ‪ N‬خط بعد در ھر خط ‪ M‬عدد ‪ ٠‬ﯾا ‪١‬‬
‫قرار گرفته اند که توصيف برد اوليه می باشد‪ .‬سپس در ‪ K‬خط بعد در ھر خط ﯾک چھارتاﯾی‬
‫〉 ‪ 〈,- .-‬و 〉 ‪ 〈,0 .0‬داده شده که توصيف نقاط ابتداﯾی و انتھاﯾی ھر ﯾک از سيم ھا می باشد‪.‬‬
‫فرمت خروجی‪:‬‬
‫در ابتدا برای ھر سيم ﯾک ‪ X‬چاپ کنيد که تعداد نقاط شکست آن سيم است‪ .‬سپس در ‪X‬‬
‫خط بعد در ھر خط دو عدد 〉 ‪ 〈,2 .2‬چاپ کنيد که مختصات نقطه ی ‪i‬ام شکست آن سيم می‬
‫باشد‪ .‬سپس ﯾک جدول × ( در خروجی چاپ کنيد که مانند ورودی خانه ھای خالی با ‪ ٠‬و‬
‫خانه ھای پر با ‪ ١‬و به ازای ترتيب سيم ھا در ورودی مسير سيم ‪i‬ام را در صفحه با عدد ‪i+1‬‬
‫رسم کند‪ .‬اگر دو سيم در ﯾک نقطه به صورت عمودی ﯾکدﯾگر را قطع کرده بودند برای نماﯾش‬
‫آن در نقطه تقاطع عدد سيم بزرگتر را قرار دھيد‪).‬ممکن است جواب ﯾکتا نباشد‪ (.‬در صورتی‬
‫که سيمی وجود داشت که دو سر آن قابل اتصال به ﯾکدﯾگر نبودند به جای خروجی باال "‪"3‬‬
‫چاپ کنيد‪.‬‬
‫محدودﯾت ھا‪:‬‬
‫‪1 ≤ , ( ≤ 200‬‬
‫‪1 ≤ 10‬‬
‫( ≤ ‪1 ≤ ,2‬‬
‫ ≤ ‪1 ≤ .2‬‬
‫‪: 256‬‬
‫‪: 4‬‬
‫‪7‬‬
‫‪7‬‬
‫‪Page‬‬
‫پروژه دوم داده ساختارھا و طراحی الگورﯾتم‬
‫نمونه‪:‬‬
‫‪0‬‬
‫‪0‬‬
‫‪3‬‬
‫‪1‬‬
‫‪1‬‬
‫‪Output 1:‬‬
‫‪2‬‬
‫‪2 5‬‬
‫‪4 5‬‬
‫‪1‬‬
‫‪3 4‬‬
‫‪0 1 1 0 0‬‬
‫‪0 1 1 2 2‬‬
‫‪0 1 1 3 3‬‬
‫‪2 2 2 3 2‬‬
‫‪0 0 0 3 1‬‬
‫‪1:‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪6‬‬
‫‪Input‬‬
‫‪5 6 2‬‬
‫‪0 1 1‬‬
‫‪0 1 1‬‬
‫‪0 1 1‬‬
‫‪0 0 0‬‬
‫‪0 0 0‬‬
‫‪2 4 4‬‬
‫‪5 4 3‬‬
‫توضيحات‪:‬‬
‫داﯾره ھای قرمز رنگ دو طرف سيم ھا می باشند و بلوک ھای مشکی خانه ھای ‪ ١‬و بلوک ھای‬
‫سفيد خانه ھای ‪ 0‬می باشند و ھمچنين نقاط شکست سيم ھا با داﯾره ھای زرد رنگ مشخص‬
‫شده اند‪ .‬توجه کنيد که کوتاه ترﯾن مسير برای سيم اول کشيده نشده است زﯾرا اگر می خواست‬
‫اﯾن گونه باشد دو سيم روی ﯾکدﯾگر به صورت مماس قرار می گرفتند و قابل تشخيص نبودند‪.‬‬
‫‪8‬‬
‫‪8‬‬
‫‪Page‬‬
‫پروژه دوم داده ساختارھا و طراحی الگورﯾتم‬
‫نکات‬
‫اﯾمنی‪:‬‬
‫نحوه ی ارسال پاسخ ھا‪:‬‬
‫جاج بر روی آدرس ‪ acm.sharif.edu‬قرار دارد‪.‬‬
‫با ھمان نام کاربری قبلی پس از وارد شدن‪ ،‬در نوار سمت راست گزﯾنهی فھرست در زﯾر محيط‬
‫را کليک کرده و سپس به محيط ‪ DS_Projs_fazli_2013Spring‬وارد شوﯾد و جوابھاﯾتان را‬
‫ارسال کنيد‪.‬‬
‫نمرهی ھر سوال ‪ ١٠٠٠‬امتياز است‪.‬‬
‫‪9‬‬
‫‪9‬‬
‫‪Page‬‬