A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

۴۲ مطلب با موضوع «Programming :: C++ Programming» ثبت شده است

قلی یک جدول n*n دارد که روی هر خانه از آن با یکی از دو نماد "." یا "#" علامت گذاشته شده است. صلیب، شکلی است که از قرار گرفتن 5 خانه کنار همدیگر به شکل زیر به دست می آید:

قلی می خواهد تعدادی صلیب روی این جدول بکشد (ممکن است صفر باشد) به طوری که هر خانه ی آن، یک نماد "#" را پوشش دهد، در ضمن هیچ دو صلیبی خانه ی مشترک نداشته باشند.

شما وظیفه دارید به او بگویید که آیا می تواند با تعدادی صلیب، تمام "#" های جدول را بپوشاند به طوری که شروط بالا نیز رعایت شوند؟

input
5
.#...
####.
.####
...#.
.....
output
YES
۰ نظر موافقین ۰ مخالفین ۰ ۱۸ بهمن ۹۲ ، ۱۶:۰۹
Amirhossein Mahdinejad

از آنجا که دوشنبه امتحان ترم اوّل آمار در دبیرستان علامه حلّی5 برگزار خواهد شد، به عنوان تمرین می خواهیم یک سری داده از ورودی دریافت کرده و نمودار میله ای آنها را چاپ کنیم. (تعداد داده ها n و فراوانی هر داده Fi است.)

 

input
5
3 4 6 2 1
output
  *
  *
 **
***
****
*****
۱ نظر موافقین ۱ مخالفین ۲ ۰۷ دی ۹۲ ، ۱۰:۵۶
Amirhossein Mahdinejad

بازی دو نفره X-O

❶ این بازی به صورت دو نفره صورت می گیرد که یک نفر از حرف X و دیگری از حرف O استفاده می کند.

❷ در این بازی از یک جدول 3*3 استفاده می شود.

❸ بازی با حرف O آغاز می شود.

❹ در هر نوبت هرکدام از بازیکن ها تنها یک بار می توانند حرف مربوط به خود را در جدول بگذارند.

❺ بازیکن ها باید سعی کنند حداقل یک ردیف، ستون و یا قطر از جدول را با حرف مربوط به خود پر کنند و برنده کسی است که اوّلین بار یکی از این حالت ها را ایجاد کند.

 

input
11
output
+---+---+---+
| O |   |   |
+---+---+---+
|   |   |   |
+---+---+---+
|   |   |   |
+---+---+---+
۲ نظر موافقین ۰ مخالفین ۰ ۰۷ دی ۹۲ ، ۰۰:۲۱
Amirhossein Mahdinejad

مسئله خیلی ساده است، آیا تا به حال سعی کرده اید دو عدد را به توان هم برسانید به طوری که جواب بدست آمده تا مثلاً 1000 رقم هم داشته باشد؟

پر واضح است که یک عدد 1000 رقمی در long long نمی گنجد! (نهایتاً 19 رقم را پاسخ می دهد) در نسخه ی اوّلیه ی این سؤال از سری سؤالات معروف Bignum Problem ، می خواهیم دو عدد long long را به توان هم برسانیم. قبل از دیدن ادامه مطلب، توجّه به مثال زیر هم خالی از لطف نیست.

input
13
92
output
13^92 = 3039403870834444806340783731173053535443315083722268135359571800908254256906888713534 531284301087613681
۰ نظر موافقین ۰ مخالفین ۰ ۰۶ دی ۹۲ ، ۲۳:۴۷
Amirhossein Mahdinejad

فرض کنید سه نفر به نامهای A و B و C داریم؛ A اندازه ی 20دلار به B، B اندازه ی 20دلار به C بدهکار است. مجموع بدهی ها 40دلار است ولی باید نوعی آنها را سازماندهی کنیم که مجموع بدهی ها کمینه شود، پس اینگونه می نویسیم که A اندازه ی 20دلار به C بدهکار است، CوB به کسی بدهکار نیستند که در اینصورت مجموع بدهی ها 20 بوده و بدهکاری ها، همان حالت قبلی را شکل می دهد.

می خواهیم شکل توسعه یافته ی این مثال را برای nنفر حل کنیم که m بدهکاری بین آنها وجود دارد. به عبارت دیگر، در نهایت برای هر یک از افراد، تفاوت بین کل پولی که باید به او بدهید و پول او باید همان باشد.به ازای هر m و n مطلوب است یافتن کمترین مجموع بدهی هایی که بین آنهاست.

input
4 3
1 2 1
2 3 1
3 1 1
output
0
۰ نظر موافقین ۰ مخالفین ۰ ۰۵ دی ۹۲ ، ۱۶:۴۰
Amirhossein Mahdinejad

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

این کشور، n استان و n-1 جاده(مسیر بین 2 استان) دارد و از هر استانی می توان از طریق تعدادی جاده به استانی دیگر رفت. هر استان از 1 تا n شماره گذاری شده و هر جاده از دو حالت خارج نیست: یا "راه سالم" است و یا "راه مشکل دار".

از میان نامزدهای انتخابات، کسی انتخاب می شود که به این وعده عمل کند: "من حداقل k و همچنین k استانی را می یابم که با تعمیر مسیرهای آن k استان منتهی به استان شماره 1 (مثلاً استان شماره 1 پایتخت آن کشور بوده)، هیچ راه مشکل داری در کشور ما وجود نداشته باشد".

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

input
5
1 2 2
2 3 2
3 4 2
4 5 2
output
1
5
۰ نظر موافقین ۰ مخالفین ۰ ۰۲ دی ۹۲ ، ۲۲:۵۹
Amirhossein Mahdinejad

مسابقه برنامه نویسی بیان - انتخابی آبان 91

دوئل

در نوع جدیدی از بازی دوئل، n سرباز در یک صف قرار می گیرند و هر سرباز به سمت چپ ‘(‘ یا راست ‘)’ نشانه گیری کرده و آماده ی شلیک می شود. در هر ثانیه، اگر دو سرباز به سمت یکدیگر نشانه گرفته باشند و سرباز زنده ای میان آن دو نباشد، به همدیگر شلیک می کنند و هر دو کشته شده و به زمین می افتند. سربازانی که از مسابقه جان سالم به در ببرند، جوایز نفیسی دریافت می کنند.

برای مثال اگر جهت گیری اولیه سربازان به صورت ) ( ( ( ) ( ) ) ( ( باشد، در ثانیه اول سربازان چهارم و پنجم از سمت چپ و سربازان ششم و هفتم به هم شلیک خواهند کرد و در ثانیه دوم، سربازان سوم و هشتم به هم شلیک خواهند کرد و سایرین سالم خواهند ماند.

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

input
2
10
))(()()))(
6
()(())
output
4
0
۰ نظر موافقین ۱ مخالفین ۱ ۰۲ آذر ۹۲ ، ۰۸:۳۵
Amirhossein Mahdinejad