اولین باره که به کاهو میای؟ راهنمای سایت رو حتما بخون!

ورود ثبت‌نام راهنما درباره‌ی کاهو
پرسش‌ها برچسب‌ها کاربر‌ها سوال بپرسید!

آمار پرسش:

  • پرسیده شده: 2019-06-06 08:23:55 -0500
  • مشاهده شده: 185 بار
  • بروز شده: 2019-06-19 06:01:42 -0500

نکاتی در مورد نوشتن پاسخ:

در این قسمت می‌تونی به یک پرسش پاسخ بدی. اگه می‌خوای در مورد پرسش بحث و اظهار نظر کنی از قسمت «ثبت نظر» استفاده کن.
پاسخت رو دقیق و کامل بنویس، از عکس استفاده کن و اگه لازمه به منابع (کتاب یا سایت) ارجاع بده.
اگه پرسش یا پاسخ‌ها مفید هستند حتما بهشون رای بده تا پرسش‌ها و پاسخ‌های خوب مشخص بشن.

استفاده از ویرایشگر:

توی قسمت پیش‌نمایش می‌تونی ببینی متنی که نوشتی چجوری روی سایت دیده میشه.
خیلی مهم: برای اینکه به خط بعد بری باید دوتا Enter بزنی.
می‌تونی از تگ‌های معمولی و ساده‌ی html هم استفاده کنی.
با دکمه‌هایی که بالای ویرایش‌گر قرار دارند کلی کار می‌شه کرد. از عکس‌گذاشتن بگیر تا لیست شماره‌دار. حتما امتحان‌شون کن.

علائم ریاضی:

برای نوشتن علائم ریاضی می‌تونی از Mathjax استفاده کنی. راهنمای Mathjax رو از سایت math.stackexchange بخون.
برای نوشتن عبارت ریاضی وسط جمله، اون عبارت رو بین دوتا $ قرار بده.
برای نوشتن عبارت ریاضی تو یه خط جدید اون رو بین دوتا $$ قرار بده.

پیدا کردن مسیر در ماتریس دو بعدی

3

https://cdn1.imggmi.com/uploads/2019/6/6/eed56c4b1ed552bc1f816e3c99f169b7-full.jpg image description

قسمت اول که میشه با یه دایمنامیک ساده از پایین چپ به بالا راست رفت اما قسمت دوم رو می خواستم بدونم با کمتر از O(n^4 پیدا کرد؟ ممنون میشم کمک کنید.

2019-06-06 08:23:55 -0500
ممممممددد 156 ● 3 ● 5 ● 13
پاک‌کردن   ویرایش سوال
نظرات

:)

2019-06-06 11:50:38 -0500 ممممممددد

1 پاسخ

2

توضیح الگوریتم:

با دیکسترا میتونی توی $O(n^2lg(n^2))$ جواب رو پیدا کنی.

به این صورت که بیای یه گراف جهت دار $n^2$ راسی متانظر با ماتریس بسازی بطوری که هر راسش متناظر با یکی از خونه های ماتریسه و بین هر دو راسی که خونه های متناظرشون توی ماتریس همساین دو تا یال بکشی(یکی از این به اون و یکی از اون به این D:). حالا وزن یالی که به راس $v$ وارد میشه رو برابر با عدد خونه ی متناظر با راس $v$ در نظر میگیری. حالا با یه دیکسترا ی ساده میتونی توی این گراف کوچکترین مسیر از $P_{1,1}$ به $P_{n,n}$ پیدا کنی.


توضیحات کد:

توی کد ماتریس رو توی آرایه ی 2بعدی M ذخیره میکنیم. بعدش داخل وکتور 2بعدی v گراف متانظر ذخیره میشه. تابع dijkstra هم الگوریتم دیکسترا رو اجرا میکنه. درآخر بدلیل اینکه برای رفتن از $P_{1,1}$ به $P_{n,n}$ باید از خود $P_{1,1}$ هم عبور کنیم مقدار درایه ی $(1,1)$ هم به جوابمون اضافه میشه.


مشاهده ی کد (C++)

2019-06-19 02:30:56 -0500
غزوو 1304 ● 7 ● 14 ● 24
پاک‌کردن   ویرایش پاسخ
نظرات

ایول دستت درد نکنه خیلی باحاله

2019-06-21 12:18:07 -0500 ممممممددد

پاسخ شما

فقط در صورتی که پاسخی برای این پرسش دارید، آن را اینجا بنویسید و برای بحث کردن از قسمت «ثبت‌ نظر» استفاده کنید. شما می‌توانید قبل از وارد شدن به سایت پاسخ خود را بنویسید. این پاسخ ذخیره می‌شود و زمانی که شما وارد سایت شدید یا ثبت‌نام کردید منتشر می‌شود.

پیش‌نمایش:

کلیه‌ی حقوق این سایت متعلق به کمیته‌ی ملی المپیاد کامپیوتر است.