PDA

View Full Version : خود را محک بزنید! (سوالات بین المللی ACM)



zayens
شنبه 11 دی 1389, 20:46 عصر
ACM International Collegiate Programming Contest


من تصمیم دارم برخی سوالات مسابقه برنامه نویسی ACM دانشگاه شریف را در این تاپیک قرار بدم

البته از اسم شریف نترسید چون کد نویسی این برنامه ها نه طولانیه و نه خیلی سخت

پس از حل این سوالات در همین تاپیک کد برنامه را قرار خواهیم داد (دوستان اگر مایل بودن و مهارت کافی داشتن کدهاشون را در همین تاپیک قرار بدن)

صورت سوال اول:


سوال اول خیلی راحته:

برنامه ای که مینویسیم باید به این صورت باشه که کاربر ، اعدادی را (طبق روال خاصی که بعدا میگم) وارد میکند (مثلا در یک تکست باکس) و برنامه، ماتریس این اعداد را در صورت وجود ایجاد میکنه

باید توجه داشت که پیداکردن ماتریس مورد نظر بسیار راحته (یعنی بصورت دستی راحت میشه ماتریس را ساخت) و اصل کار کد نویسی اون هست

اما نحوه پیدا کردن ماتریس
به مثال زیر نگاه کنین:
2 3
8 10
5 6 7
4
0 2 > 2
2 1 = 3
2 3 > 2
2 3 < 5

اینها مقادیر ورودی است که پس از تایپ اون توسط کاربر باید یک ماتریس 2 در 3 را بده که مقادیر آرایه هاش در زیر اومده:

2 3 3
3 3 4

البته این ورودی ناقصه که مثال کاملش را در آخر میگم ولی در هر حال معنی اعداد بصورت زیره:

خط اول: در خط اول باید 2 عدد با یک فاصله وارد شده باشه

عدد اول تعداد سطرها و عدد دوم تعداد ستونهای ماتریس مورد نظر است(در مثال بالا ماتریس ما 2 سطر و 3 ستون باید داشته باشد)

خط دوم: جمع سطرهای ماتریس(در مثال بالا8 جمع همه آرایه های سطر اول و 10 مجموع همه اعداد در آرایه های سطر دوم است)

خط سوم: خط سوم مربوط به جمع ستونهای ماتریسه (درمثال بالا 5 جمع همه آرایه های ستون اول و 6 جمع همه آرایه های ستون دوم است و 7 برای ستون 3 است)

پس تا اینجا با 3 خط اطلاعات لازم را بدست آوردیم

اما باید محدودیت ها را هم برای این که بفمیم چه آرایه ای چه عددی را داره وارد شده باشه:

در مثال بالا 4 یعنی این محدودیت ها در ادامه 4 خط خواهد بود

پس از این هر خط دقیقا از 3 عدد تشکیل شده . یک علامت > = < که راهنمایی میکنه که آرایه ها چه اعدادی باید باشند .

در مثال بالا اومده:
2 1 = 3

این یعنی آرایه واقع در سطر 2 و ستون 1 دقیقا برابر 3 است

یا مثلا
2 3 < 5

یعنی آرایه واقع در سطر 2 و ستون 3 کمتر از 5 است

*لازم به ذکر است که اگر بخواهیم بیان کنیم که مثلا «همه ی» سطرها یا همه ستونها عددشون فلان است از صفر استفاده میکنیم (مثال:)





0 2 > 2

یعنی آرایه «همه» سطرها در ستون 2 (و یا بهتر بگم : کل ستون دو) آرایه هاش بیشتر از 2 باید باشد

جواب (یا همون خروجی برنامه) در نهایت ماتریسی است که اعدادش نباید منفی باشد. اگر هم چنین ماتریسی را با اطلاعات کاربر نشود حل کرد پیغام «impossible» چاپ میشود.

یه مطلب دیگه و اون هم این که کاربر میتونه چندین سوال را وارد کنه که در این صورت، جواب هم باید به ترتیب سوالات و با فاصله یک سطر محاسبه بشه

برای این که برنامه بفهمه چند تا سوال وارد خواهد شد، قبل از سطر اول، باید تعداد سوالات مشخص بشه و نیز کاربر باید بعد هر سوال یک سطر خالی بذاره:

پس با این حساب، کامل شده ی مثال بالا در زیر اومده که چون خط ابتدایی عدد 2 است، دارای دو سوال است و برنامه در آخر باید 2 ماتریس را ایجاد کنه:

2

2 3
8 10
5 6 7
4
0 2 > 2
2 1 = 3
2 3 > 2
2 3 < 5

2 2
4 5
6 7
1
1 1 > 10



جواب ها(خروجی مساله) به صورت زیر خواهد بود:



2 3 3
3 3 4

IMPOSSIBLE




این هم از متن اصلی سوال64412

zayens
یک شنبه 12 دی 1389, 10:09 صبح
بعد از اینکه به هر سوال جواب داده شد صورت سوال بعدی را براتون میذارم

abbas.oveissi
یک شنبه 12 دی 1389, 11:14 صبح
بعد از اینکه به هر سوال جواب داده شد صورت سوال بعدی را براتون میذارم

بد موقع هست،زمان امتحاناته ، آدم اینقدر فکر درس هست که جا برای فکر به الگوریتم نمونده :عصبانی++:

ببینم این مسابقه ها چه جوری برگزار میشه مثلا؟؟؟کتبی یا نه پای کامپیوتر؟ و چه تاثیری داره نمره بالا کسب کردن توش ، جایزه داره ؟

zayens
یک شنبه 12 دی 1389, 12:23 عصر
ببینم این مسابقه ها چه جوری برگزار میشه مثلا؟؟؟کتبی یا نه پای کامپیوتر؟ و چه تاثیری داره نمره بالا کسب کردن توش ، جایزه داره ؟
مسابقات ACM همه ساله در چند مرحله در سرتاسر جهان برگزار می شود. موضوع این مسابقات برنامه نویسی و طراحی الگوریتم بهینه است. بدین ترتیب که گروههای شرکت کننده در قالب تیمهای سه نفره باید به سوالاتی که پاسخ آنها کدهای برنامه نویسی هستند جواب دهند. هدف در این مسابقات یافتن استعدادهای برتر برنامه نویسی است که عموما توسط شرکت های بزرگ به کار گرفته می شوند. پشتیبان این مسابقات شرکت های بزرگی همچون IBM هستند.

http://egza.files.wordpress.com/2008/05/acmicpclogo.jpg?w=310&h=278


دانشگاه صنعتی شریف نیز متولی برگزاری یکی از این مسابقات در آسیاست که همه ساله در اواخر پاییز برگزار می شود. در این مسابقات تیمهایی از دانشگاههای سرتاسر آسیا از جمله دانشگاههای داخل کشور در رقابتی تنگاتنگ برای حضور در مرحله نهایی و مسابقات جهانی پا به میدان می گذارند.
همانطور که عنوان شد تیمهای شرکت کننده در این مسابقات از سه عضو تشکیل می شود که بنا بر یک قانون نانوشته اما ضروری باید واجد شرایط خاصی باشند. از جمله اینکه:
1- باید به یکی از زبانهای برنامه نویسی متداول و اعلام شده توسط کمیته اجرایی مسابقات تسلط کامل داشته باشند. این زبانها عموما C++ ، C و یا جاوا می باشند.
2- اعضای تیم باید تسلط کافی بر مفاهیم طراحی الگوریتم ، بهینه سازی الگوریتم ، پیچیدگی الگوریتم ، ساختمان داده ها و … داشته باشند.
3- حداقل یکی از اعضای تیم باید تسلط کامل بر زبان انگلیسی داشته باشد تا بتواند سوالات را به زبان مادری ترجمه و در اختیار سایر اعضای گروه قرار دهد. ( سوالات این مسابقات در تمامی مراحل به زبان انگلیسی طرح می شود.)
4- حداقل یکی از اعضا باید دست به تایپ خوبی داشته باشد تا بتواند الگوریتمهای طراحی شده را سریعا به کد تبدیل کند. (تمامی مراحل این مسابقات به صورت عملی و در پشت کامپیوتر برگزار می شود.)
تبدیل الگوریتم به کد خود یک مهارت بزرگ است که در واقع عامل اصلی طبقه بندی تیمها در مسابقات اینچنینی محسوب می شود.


http://egza.files.wordpress.com/2008/05/acm1.jpg?w=600

http://egza.files.wordpress.com/2008/05/acm2.jpg?w=600

abbas.oveissi
یک شنبه 12 دی 1389, 12:34 عصر
مسابقات ACM همه ساله در چند مرحله در سرتاسر جهان برگزار می شود. موضوع این مسابقات برنامه نویسی و طراحی الگوریتم بهینه است. بدین ترتیب که گروههای شرکت کننده در قالب تیمهای سه نفره باید به سوالاتی که پاسخ آنها کدهای برنامه نویسی هستند جواب دهند. هدف در این مسابقات یافتن استعدادهای برتر برنامه نویسی است که عموما توسط شرکت های بزرگ به کار گرفته می شوند. پشتیبان این مسابقات شرکت های بزرگی همچون IBM هستند.


خداییش دستت درد نکنه،از این کامل تر نمیشد توضیح بدی،کاملا شیر فهم شدم :لبخند: الان این سوال های بخش مقدماتیش هس ؟؟ مدت زمان هر سوال هم بگی خوبه

zayens
یک شنبه 12 دی 1389, 13:52 عصر
خداییش دستت درد نکنه،از این کامل تر نمیشد توضیح بدی،کاملا شیر فهم شدم :لبخند: الان این سوال های بخش مقدماتیش هس ؟؟ مدت زمان هر سوال هم بگی خوبه

تيم­ها شامل 3 دانشجو و يک سرپرست (coach) هستند. در زمان مسابقه يک سيستم در اختيار هر تيم قرار مي­گيرد که اين سه دانشجو به طور مشترک با اين سيستم شروع به حل مسائل مي­کنند. مدت زمان هر مسابقه 5 ساعت است و حداقل 8 سوال در اختيار شرکت کنندگان قرار مي گيرد.
پاسخ دادن به هر سوال در حقيقت نوشتن يک برنامه است. به عبارت ديگر در صورت مسئله از شرکت کنندگان خواسته مي­شود تا برنامه اي بنويسند که اطلاعات مشخصي را از فايل ورودي معيني، (مثلا A.in) بخوانند و پس از انجام پردازش­هاي خاصي که در متن سوال آمده، نتيجه را در يک فايل خروجي (مثلا A.out) يا خروجي استاندارد (مانيتور) چاپ کنند.
هر دانشگاه تعدادي دانشجو -با توجه به ظرفيتي که دانشگاه شريف مشخص مي­کند- براي شرکت در مسابقات به تهران اعزام مي­کند؛ که اين ظرفيت با توجه به تعداد سوالهاي حل شده توسط تيمهاي دانشگاه در دوره­هاي قبل مشخص مي­شود. معمولا دانشگاه­ها براي انتخاب تيم­هاي اعزامي خود، يا مسابقاتي محلي در سطح دانشگاه خود برگزار مي­کنند و يا اينکه از دانشجويان مي خواهند که در مسابقهOnline شريف که معمولا در مهر ماه برگزار مي­شود، شرکت کنند و از نتيجه آن به عنوان ملاکي براي تعيين تيمهاي اعزامي به شريف استفاده مي­کنند.
تيم­هاي منتخب (سه تيم برتر) مسابقه ي منطقه اي شريف، به مرحله جهاني راه مي­يابند و از هر دانشگاه حداکثر يک تيم مي­تواند به اين مرحله صعود کند.




http://sharif.ac.ir/%7Eacmicpc/03/picture1.jpg

در اين مسابقه به هر تيم يک کامپيوتر داده ميشود و با شروع مسابقه تيم ها ميبايست چند سؤال (حدود 5 تا 8 سؤال) را در مدت زمان مسابقه به وسيله کامپيوتر و با يک زبان برنامه نويسی خاص حل نمايد.در جریان مسابقه، پس از اينکه يک تيم سؤالی را به صورت کد يک زبان خاص مينويسد، آن را برای قاضی(judge) مي فرستد و قاضی ورودی های مورد نظر خود را به برنامه ی تيم فرستنده مي دهد و انتظار دارد که خروجی اي که آن برنامه توليد مي کند دقيقاً با خروجی مورد نظر خودش يکسان باشد و در اين صورت سؤال به اصطلاح Accept ميشود و در غير اين صورت ممکن است حالت های خاصی پيش بيايد، مثلاً اگر حتی يکی از خروجی ها ی برنامه اشتباه بود، سؤال wrong answer ميشود. يا ممکن است برنامه در مدت زمان تعيين شده توسط قاضی خروجی ها را توليد نکند و ... که در همه ی اين حالت ها، يک امتياز منفی برای تيم در نظر گرفته ميشود.در نهايت، تيمی که سؤالات بيشتری را در زمان کمتر و با امتياز منفی کمتر accept بگيرد، برنده ی مسابقه خواهد بود.

zayens
یک شنبه 12 دی 1389, 20:28 عصر
حل این سوال یک ساعت هم زمان نمیخواد
پس دوستانی که شروع کردن تا با نوشتن این برنامه یه تمرین فکری کرده باشن کدهاشون را قرار بدن

zayens
دوشنبه 13 دی 1389, 15:14 عصر
چرا کسی دست به کار نمیشه؟

ACorvinus
دوشنبه 13 دی 1389, 15:36 عصر
چرا کسی دست به کار نمیشه؟

سلام. من شروع کردم بنویسم ولی قبول کن یا باید اینکاره باشی یا اینکه 1 ساعت مدت کافی برای حل این مساله نیست.
بازم میگم، شاید برای حل این مثال 1 ساعت کافی باشه ولی نه برای کسانی که اولین بار میخوان سوالات ACM رو حل کنن.

* S K Y *
دوشنبه 13 دی 1389, 16:23 عصر
تو رو خدا ببین ما دنبال چییم اینا دنبال چی هستن
ما هنوز تو تکست باکس موندیم
اینا دارن ACM حل میکنن!

ACorvinus
دوشنبه 13 دی 1389, 16:32 عصر
تو رو خدا ببین ما دنبال چییم اینا دنبال چی هستن
ما هنوز تو تکست باکس موندیم
اینا دارن ACM حل میکنن!

باهاتون موافق نیستم رفیق!

joker
دوشنبه 13 دی 1389, 16:37 عصر
وای چقدر بادکنک :)
همه جای دنیا اینطوریه ؟ یکیش بترکه حواس برنامه نویسها پرت نمیشه؟
( حاشیه پردازش را حال کردید )

abbas.oveissi
دوشنبه 13 دی 1389, 17:43 عصر
من یه سری راه هارو رفتم اما حل نشد :ناراحت: من که نتونستم تو یک ساعت حلش کنم :لبخند: البته خب تیم ها 3 نفره هست ، میشه همفکری کرد

zayens
دوشنبه 13 دی 1389, 20:31 عصر
من یه سری راه هارو رفتم اما حل نشد :ناراحت: من که نتونستم تو یک ساعت حلش کنم :لبخند: البته خب تیم ها 3 نفره هست ، میشه همفکری کرد
شما کدهاتو (با کامنت)بذار(حتی اگر ناقصه)
من کمکت میکنم.

zayens
دوشنبه 13 دی 1389, 20:34 عصر
وای چقدر بادکنک :)
همه جای دنیا اینطوریه ؟ یکیش بترکه حواس برنامه نویسها پرت نمیشه؟

بله همه جای دنیا اینطوریه
هر سوالی که توسط هر تیم حل بشه یه بادکنک به میزشون اضافه میکنن

zayens
سه شنبه 14 دی 1389, 22:20 عصر
عجیبه!!

فکر میکردم با این همه برنامه نویس پر تجربه که توی سایت هست یه نفر پیدا میشه که سوال اول را حل کنه!
با این وضعیت منم دیگه سوالای بعدی را گمون نمیکنم بذارم

unknown.unforgiven
سه شنبه 14 دی 1389, 22:29 عصر
من همچین جسارتی نمیکنم که بگم با تجربه هستم، اما شما هم یه خورده دندون رو جیگر بذار. الآن فصل امتحاناست. درسته همه تو سایت کم و بیش فعال هستن ولی فعالیتشون در حد جواب دادن چنتا سواله که وقت کمی میگیره. بعد از امتحانات اساتید خدمت میرسن:چشمک:

Salah Sanjabian
چهارشنبه 15 دی 1389, 00:02 صبح
یه سوال
کاربر میتونه اشتبا وارد کنه؟
مثلاتو همون سطر اول به جای 2 حرف وارد کنه؟
برنامه باید اینارو هم چک کرده باشه؟
البته برااین کار فکر کنم ++C بهترباشه

abbas.oveissi
چهارشنبه 15 دی 1389, 00:16 صبح
یه سوال
کاربر میتونه مثلا اشتبا وارد کنه؟
مثلات و همون سطر اول به جای 2 مثلا حرف وارد کنه؟
برنامه باید اینارو هم چک کرده باشه؟
البته برااین کار فکر کنم ++C بهترباشه

اینها که مهم نیس،مهم اون بخش اصلی الگوریتم هست و چک کردن این اشکالات یا دریافت اطلاعات ورودی که چیزی نداره :متفکر:

unknown.unforgiven
چهارشنبه 15 دی 1389, 11:37 صبح
یه چیز به ذهنم رسید که میخواستم ببینم درسته یا نه؟ باید به صورت بازگشتی حل بشه؟

zayens
چهارشنبه 15 دی 1389, 14:57 عصر
من همچین جسارتی نمیکنم که بگم با تجربه هستم، اما شما هم یه خورده دندون رو جیگر بذار. الآن فصل امتحاناست. درسته همه تو سایت کم و بیش فعال هستن ولی فعالیتشون در حد جواب دادن چنتا سواله که وقت کمی میگیره.
توی خود مسابقات 8 سوال میدن که باید تو 5 ساعت حل بشه.
در واقع حل الگوریتم و کد نویسی بعضی سوالان از 45 دقیقه هم کمتر وقت میخواد
برای حل این سوال هم میتونستین (لااقل) از روش مهندسی معکوس عمل کنین
به این صورت که اول ببینه ماتریس چند در چنده و بعد ماتریس را ساخته و همه آرایه هاش را صفر در نظر بگیره و بعد با توجه به محدودیت ها تک تک آرایه ها را پیدا کنه
البته ماتریس نهایی باید در کمتر از 1 دقیقه پیدا بشه که با این روش، برای ماتریس های بالای 200 سطر و ستون شاید بیشتر طول بکشه

یه چیز به ذهنم رسید که میخواستم ببینم درسته یا نه؟ باید به صورت بازگشتی حل بشه؟
بدون بازگشتی هم میشه حل کرد ولی خب قطعا حل به روش بازگشتی کد نویسی را خیلی کاهش میده.

unknown.unforgiven
چهارشنبه 15 دی 1389, 19:38 عصر
توی خود مسابقات 8 سوال میدن که باید تو 5 ساعت حل بشه.
در واقع حل الگوریتم و کد نویسی بعضی سوالان از 45 دقیقه هم کمتر وقت میخواد
برای حل این سوال هم میتونستین (لااقل) از روش مهندسی معکوس عمل کنین
به این صورت که اول ببینه ماتریس چند در چنده و بعد ماتریس را ساخته و همه آرایه هاش را صفر در نظر بگیره و بعد با توجه به محدودیت ها تک تک آرایه ها را پیدا کنه
البته ماتریس نهایی باید در کمتر از 1 دقیقه پیدا بشه که با این روش، برای ماتریس های بالای 200 سطر و ستون شاید بیشتر طول بکشه

بدون بازگشتی هم میشه حل کرد ولی خب قطعا حل به روش بازگشتی کد نویسی را خیلی کاهش میده.

کممممممممممممممممممممک :گریه: از اون جایی که تازه کارم شاید برنامه فکاهی به نظر برسه. امتحان دارم وقت نمیکنم بیشتر روش کار کنم، یه خورده هم شما کمک کن. مشکلش تو تیکه بازگشتیشه، اون جایی که بازگشت به داخل میده مقادیر اشتباه میده

zayens
پنج شنبه 16 دی 1389, 15:03 عصر
ممنون
الآن بهش یه نگاه میندازم

Topcoding
پنج شنبه 16 دی 1389, 19:10 عصر
سلام دوستان
از شما @Zayens بابت اینکه وقت گذاشتید، نشستید سوال رو ترجمش کردی و تو سایت تایپش کردی ممنون و از اینکه پیگیر جواب دوستان هستید بازم یه باریک ایول مشت:تشویق:
با اجازه بزرگان من یه خورده از ACM بگم البته این ها رو از بچه های ACM کار بدست آوردم و خودم که مبتدیم :
به عقیده من ACM شامل 3 هنر می باشد
1. هنر حل مسئله
2.هنر طراحی و تحلیل الگوریتم
3.هنر برنامه نویسی
اولا باید بتوانیم مسئله رو حل کنیم روی کاغذ منظورمه (یا فرمولش رو بدست بیاوریم) بعد می ریم سراغ اینکه اون راه حل رو به زبان ماشین (الگوریتم) تبدیلش کنیم و اون وقته که با هر زبان استاندارد مسابقه می شه کد کرد و فرستاد.
توی ACM باید حواسمان به همه چی باشه به I/O(فرمت ورودی/ خروجی) به استثناها اینکه اگر کاربر اشتباه وارد کرد چه اتفاقی باید بیافتد و مهمتر اینکه به زمان اجرا و مقدار حافظه ای که سوال در اختیار ما قرار داده و...
مثلا ما می آییم یه مسئله رو حل می کنیم و همه جور ورودی رو جواب درست می ده ولی زمان اجراش زیاده و Time Limit می ده یعنی اینکه اون الگوریتمی که ما نوشتیم order زمانیش زیادتر از حد قابل قبوله و اون وقت ACM کار باید روی الگوریتمش کار کنه تا order ش رو بیاره پایین وگرنه به اونا بادکنکی نمیدن هر چند که مسئله رو حلش کردن .
اینارو گفتم یه کم اطلاعاتمون زیاد بشه نه اینکه ناامید کنم در کل ACM خیلی باحاله و پر از نشاط و استرس
من خودم یه تاپیک به مدیران فرستادم تا یه بخش جداگانه برای ACM ایجاد کنند و در آن تکنیک های مسابقه و کار روی الگوریتمهای ACM ی رو آموزش بدهند و رفع اشکال بچه ها هم اونجا باشه و هر ماهی خود بچه های برنامه نویس زحمت یه مسابقه online رو بکشند ولی خبری نشد و من هم زیادپیگیرش نبودم امیدورام که شما ها پیگیری کنید
راجع به حل مسئله ها در #C من فک نکنم توی محیط ویژوال برنامه ها رو بنویسند و و اگر قرار شد توی #C باشه توی محیط کنسول می نویسند بچه ها پس سعی کنید در همون اول کار با کنسول بنویسید تا با استاندارد مسابقه پیش بریم
دوست عزیز @Zayens بچه ها یه کمی راست می گویند تو وسط امتحاناته فرصت چندانی برای فکر روی الگوریتم ها نیست درضمن برای فکر کردن باید تمرکز کرد و اما اینکه شما می گویید این مسئله رو توی 1ساعت حل کنیم یه کمی غیر منطقی چون من خودم رو می گم با این تیپ آشنا نیستم و باید تمرین کنم و کد بزنم تا آشنا بشم و این یه پرسه زمان بره ولی خب ممکنه تیم اول این سوال رو توی 10 یا 15 حل بکنه ولی این رو هم باید ببینیم که همین تیم قبل از این سوال بالغ بر 20 تا سوال با همین تیپ(مشابه این سوال) حل کرده و کاملا آماده است چه برسد به من که تازه شرو ع کردم ولی خب مطمئنم با کمک دوستان همه با هم پیشرفت خواهیم کرد
من هم راجع به این سوال فکر می کنم اگه راه حلی به ذهنم رسید کدش رو می زارم البته من توی ++VC کد میزنم که توی acm اصلا مهم نیست با کدوم زبان کد بزنیم مهم بهتر الگوریتمه
به امید موفقیت شما @Zayens و بقیه دوستان

unknown.unforgiven
پنج شنبه 16 دی 1389, 21:33 عصر
/D:\ بالاخره درست شد :لبخند:
پ.ن 1: تو برنامه اون قابلیتی که دوستمون گفته بود که تو خط اول بپرسه میخواد چند تا ماتریس رو حساب کنه نذاشتم (تعداد سوالاتی که میخوایم به برنامه بدیم)
پ.ن 2: متاسفانه زیر یه دقیقه حساب نمیکنه :گریه: (یه جدول 9x9 یا همون سودوکو دادم بهش)
پ.ن 3: دوست عزیز میشه لطف کنی سورس بهینه برنامه رو هم بذاری؟
پ.ن 4: اگه تو برنامه جاییش غلط بود لطفا بگید

zayens
جمعه 17 دی 1389, 08:02 صبح
اینکه شما می گویید این مسئله رو توی 1ساعت حل کنیم یه کمی غیر منطقی چون من خودم رو می گم با این تیپ آشنا نیستم و باید تمرین کنم و کد بزنم تا آشنا بشم و این یه پرسه زمان بره ولی خب ممکنه تیم اول این سوال رو توی 10 یا 15 حل بکنه ولی این رو هم باید ببینیم که همین تیم قبل از این سوال بالغ بر 20 تا سوال با همین تیپ(مشابه این سوال) حل کرده و کاملا آماده است چه برسد به من که تازه شرو ع کردم ولی خب مطمئنم با کمک دوستان همه با هم پیشرفت خواهیم کرد
به امید اینکه زمانی برسه که بتونیم همه این سوالات را در کمتر از 30 یا 20 دقیقه حل کنیم.


/D:\ بالاخره درست شد :لبخند:
پ.ن 1: تو برنامه اون قابلیتی که دوستمون گفته بود که تو خط اول بپرسه میخواد چند تا ماتریس رو حساب کنه نذاشتم (تعداد سوالاتی که میخوایم به برنامه بدیم)
پ.ن 2: متاسفانه زیر یه دقیقه حساب نمیکنه :گریه: (یه جدول 9x9 یا همون سودوکو دادم بهش)
پ.ن 3: دوست عزیز میشه لطف کنی سورس بهینه برنامه رو هم بذاری؟
پ.ن 4: اگه تو برنامه جاییش غلط بود لطفا بگید
از شما هم بسیار ممنونم

به درخواست دوستان، ادامه سوالات را بعد از امتحانات دانشگاه قرار خواهم داد.
بنابراین بهتره الآن خودمنو را برای نبرد با امتحانات دانشگاه آماده بکینم.
خداحافظ

mo.jalilian
شنبه 18 دی 1389, 00:52 صبح
با سلام.
اول از zayens تشکر میکنم که این حرکت رو انجام دادن، این سایت همچین چیزی کم داشت.
اول چند تا نکته میگم، من پست هایی که در مورد ACM زده شده و اون رو تعریف کرده نخوندم، چون به اندازه 4-5 تا مسابقه که توش شرکت کردم تجربش رو دارم و بنابر این اگر مطالبی که پایین میگم تکراری هستن ببخشید.
1- زبان های برنامه نویسی که در مسابقه استفاده میشه، c,C++,java هستن و بنابر این سی شارپ توش نیست، اما چون مسئله مهم توی این مسابقه الگوریتم هست ما الان که مسابقه ای در کار نیست با سی شارپ مینویسیم
2- چون سیستم داوری در مسابقات خودکار است و خود سیستم جواب ها را چک میکنه و کامپایلر سی شارپ رو نمیشناسه شاید یکی از دلایل استفاده نکردن از اون این باشه.
3- در مسابقه برای اجرا شدن هر الگوریتم بازه زمانی مشخص میشه و اگر بیشتر از اون اجرای برنامه طول بکشه الگوریتم شما قبول نمیشه و جواب منفی به شما داده میشه.
4- یکی از مسائل مهم توی مسابقه استرس بالاش هست و مخصوصا اون نیم ساعت آخر.
ولی هیچی به اون لذت بردن آخرش نمیشه.

5- سوالها در محیط کامند اجرا میشن و دیزاینی در برنامه در کار نیست، پس پیشنهاد میدم برای حل این سوالها از consol سی شارپ استفاده کنید و تا حد امکان از امکانات ویژه ای که سی شارپ در اختیارتون میزاره کمتر استفاده کنید، چون اصل در این مسابقات تولید الگوریتم خوبه.

این هم برنامه ای که من برای این سوال نوشتم

zayens
یک شنبه 19 دی 1389, 23:11 عصر
از mo.jalilian تشکر میکنم
کدهای جالبی نوشتین
البته برنامه ی شما برای موارد impossibleهنگ میکنه و چیزی نمایش نمیده و امکان تایپ هیچ چیزی را هم نمیده.
در هنگام کار با برنامه نیز ، بعد از این که کاربر در خط اول تعداد سوالات را وارد کرد، باید یک سطر فاصله با صورت سوال قرار بده
که در الگوریتم شما این یک سطر لحاظ نشده است.
مشکل بعدی اینه که بعد از اینکه تمام سوالات نوشته شد باید جواب نمایش داده بشه.
که در الگوریتم شما اگر مثلا 2 سوال در ابتدا مد نظرمون باشه ، برنامه اجازه ی پرسیدن 2 سوال را میده ولی جوابها را نیز به محض
تمام شدن هر سوال نمایش میده که باید بعد از آخرین سوال بیاد و همونطور که گفتم اگر ما 2 سوال را بخواهیم وارد کنیم
اگر سوال اول ما impossible باشه، از اونجایی که جواب بلافاصله بعد سوال اول مطرح میشه، با توجه به مشکل گفته شده در مورد impossible
، برنامه هنگ کرده و اجازه ی ورود داده های سوال بعدی را هم نمیدهد.
در هر صورت از این که زحمت کشیدید و وقت گذاشتید بسیار ممنونم

mo.jalilian
دوشنبه 20 دی 1389, 15:59 عصر
با سلام.
بله مورد Impossible رو فراموش کردم و الان توی سوال متوجهش شدم، که این رو میشه با یک کانتر معقول و یه روش های دیگه کنترل کرد، در مورد فاصله بین تعداد و تکرار و شروع وارد کردن اطلاعات هم اصلا متوجهش نشدم، چون مثال رو که دیدم شروع به کد نوشتن کردم و از اونجایی که توی تمام سوالهایی که تا حالا حل کرده بودم این فاصله لحاظ نشده بود من هم دقت نکردم.
در مورد اینکه جواب هر سوال بعد از وارد کردن صورت سوال نمایش داده میشه، چون همانطور که قبلا گفتم داوری به صورت خودکار است این مسئله مشکلی ایجاد نمیکنه، اما اگر باید حتما این کار را کرد، میشه اون رو توی یه آرایه سه بعدی ریخت

بابت دقتی که کردید و تذکر هایی که دادید ممنونم