PDA

نسخه کامل مشاهده نسخه کامل : »» الگوریتم های معروف و کاربردی ««



Arrowtic
10-11-2012, 15:11
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


با سلام.در این تاپیک قصد داریم روش های مختلف الگوریتم نویسی و استفاده از اون برای حل مسئله رو بررسی کنیم و همچنین الگوریتم های معروف و کاربردی رو کدشون رو گذاشته و تشریحشون کنیم.
منظور از روش های مختلف الگوریتم نویسی و حل مسئله به وسیله اون,استفاده از الگوریتم ها و روش هایی نظیر الگوریتم های BigNum و یا استفاده از کدهای دینامیک هست که بتونیم کدی رو بزنیم که جواب درست رو در زمان مناسب به ما بده.همچنین لیست این الگوریتم ها و روش های کد زنی رو در پست اول خواهیم گذاشت.
بهترین محل هم برای تمرین و مشاهده ی این گونه سوالات دو سایت زیر هستن:
SGU ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
CodeForces ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])


لیست مطالب

مجموع اعداد بسیار بزرگ ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
حاصلضرب اعداد بسیار بزرگ ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
کدگری ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

Arrowtic
10-11-2012, 15:17
BigNum - Sum
مجموع اعداد بسیار بزرگ


این الگوریتم و کد بسیار معروف همون طور که از اسمش معلومه الگوریتم و کدیه که به وسیله اون میتونیم دو عدد بسیار بزرگ(چندین رقمی) رو با هم جمع کنیم.
دلیل نیاز به این برنامه اینه که زیاد پیش میاد که به چنین کدی نیاز باشه و اعداد از نوع int و همچنین دیگر انواع متغیر ها ممکنه گنجایش عدد ورودی و خروجی رو نداشته باشن.در این مواقع میایم و ورودی رو به عنوان رشته میگیریم و بعد با استفاده از وکتور و کد های اسکی با هم جمع میکنیم و درنهایت وکتور خروجیمون رو رقم رقم چاپ میکنیم که به صورت یک عدد به هم پیوسته کاربر اون ها رو میبینه.
در کل در کدهای BigNum ما عملیات مورد نظر رو خودمون شبیه سازی و استفاده میکنیم.


کد مجموع اعداد بسیار بزرگ ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

کدهای اسکی
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Arrowtic
10-11-2012, 16:30
BigNum Multiply
حاصلضرب اعداد بسیار بزرگ


این هم مانند کد جمع اعداد هست و به همون صورت با استفاده از رشته و وکتور و کد اسکی حساب میشه و فقط ضرب رو شبیه سازی میکنیم.
نکته اصلی این کد در اینه که در دو عددمون,دو خونه(رقم) که اندیسشون در عددی که بهش تعلق دارن,حاصل ضربشون در خونه ی مجموع اندیس ها قرار میگیره.مثلا رقم دوم و سوم حاصلضربشون در رقم 5م قرار میگیره.
این شماره گذاریه ارقام که گفتم از چپ به راست هست یعنی رقم با اندیس صفر در عدد 143 میشه 1.
دلیل استفاده از این نکته مجموع اندیس ها هم باز مانند سوال قبل در این هستش که دو عدد وارد شده ممکنه تعداد ارقامشون فرق کنه.



کد حاصلضرب اعداد بسیار بزرگ ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

Arrowtic
12-11-2012, 21:43
Gray Code
کد گری
باینری


این کد تمامی اعداد باینری(مبنای 2) n رقمی رو چاپ میکنه به طوری که هر دو عدد متوالی در یک رقم اختلاف دارن.


مشاهده کد ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])