مقدمه
سوال «چگونه کار کنیم تا در مسابقات برنامه نویسی موفق شویم؟» به تعداد افراد شرکت کننده در این مسابقات جواب مختلف دارد ولی تعدادی ضدالگو وجود دارد که همه با مشکل ساز بودن این ضدالگو ها موافق هستند. یک مثال ساده این است که مثلا تشخیص روشهای افزایش ده سال طول عمر، سخت تر از تشخیص روشهای کاهش ده سال طول عمر هست و اگر شما از این ضد الگوها یا کارهای اشتباه دوری کنید میتوان امیدوار بود که در کل نتیجه بهتری بگیرید. بد نیست از کتاب «چگونه در C++ برنامه ننویسیم؟» نام ببرم که در انتخاب عنوان از این کتاب الگو گرفتم.
ادامه مطلب

مقدمه

بسیاری از مسائل برنامه نویسی تنها با استفاده از Dynamic Programming حل میشوند در این نوشتار سعی شده که طرح کلی برنامه نویسی پویا و دلیل و مزایای استفاده از آن با چندین پیاده سازی برای تابع Fibonacci بیان شود. در مطالب آینده مثال های مهم تر و به نسبت پیچیده تری قرار میگیرد.


برنامه نویسی پویا یا Dynamic Programming چیست ؟

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

در استفاده از تکنیک برنامه نویسی پویا ما حل مسئله را توسط حل مسئله های کوچکتر بیان میکنیم با این تفاوت که با ذخیره سازی از محاسبه دوباره اجتناب میکنیم.

ادامه مطلب


برای برنامه نویسی ACM و یا به عبارت بهتر حل سوالات ACM شما نیاز به آشنایی با موارد زیر دارید، این موارد به طور کلی بیان شده است:

1. برنامه نویسی به زبان ++C یا جاوا ( ترجیحا ++C)

2. طراحی الگوریتم (بیشتر سوالات نیاز به دانستن اطلاعات بالایی از یک زبان برنامه نویسی ندارند و دانستن در حد ورودی و خروجی خواندن و کار با عناصر یک آرایه کافیست.)

3. ساختمان داده (برای حل برخی سوالات)

4. هوش مصنوعی (برای حل برخی سوالات)


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