نمونه سورس کد حل مسئله N-Queen توسط DFS و BFS و نمایش آن در سی شارپ

نمونه سورس کد حل مسئله N-Queen توسط DFS و BFS و نمایش آن در سی شارپ

نمونه سورس کد حل مسئله N-Queen با DFS و BFS در سی شارپ

در این مقاله به طور کامل و جامع به توضیح روش‌های DFS و BFS برای مسئله N-Queen می‌پردازیم و نحوه نمایش نتیجه در سی شارپ را توضیح می‌دهیم. برای هر دو رویکرد، ابتدا مفهوم پایه را بیان می‌کنیم، سپس ساختار داده‌ها را توضیح می‌دهیم و در نهایت نکات پیاده‌سازی کلیدی را بررسی می‌کنیم. هدف این است که بتوانید با داشتن این توضیحات، کد کامل یا شبه‌کد قابل اجرا بنویسید و نتیجه را به شکل گرافیکی یا متنی نمایش دهید.

چارچوب اصلی مسئله N-Queen چیست؟

  • هدف این است که نوزده‌ها یا N تا شاه در یک صفحه n×n قرار بگیرند بدون اینکه در ردیف، ستون یا قطرها برخوردی داشته باشند.

  • برای یک rدیف از روش DFS یا BFS، باید در هر گام یک ستون مناسب در هر ردیف را بیابید و از طریق backtracking یا گسترش گره‌ها جلو رفت.

  • نمایش نتیجه معمولاً به صورت فهرست ردیف به ردیف یا آرایه‌ای از ستون‌های شاها در هر ردیف انجام می‌شود.
  • روش DFS با بازگشتی یا Backtracking

  • مفهوم پایه: در هر گام، برای ردیف فعلی، تمام ستون‌های معتبر را بررسی می‌کنیم. اگر ستونی مناسب یافتیم، شاه را قرار می‌دهیم و به ردیف بعدی می‌رویم. اگر به بن‌بست رسیدیم، به گام قبل برمی‌گردیم تا گزینه دیگری را امتحان کنیم.

  • داده‌های اصلی: یک آرایه یا لیست که شاها را در ستون‌های مختلف ردیف‌های قبلی نشان می‌دهد. معمولاً از یک آرایه int[colCount] استفاده می‌کنیم که مقدار هر اندیس نشان‌دهنده ستونی است که شاه در آن ردیف قرار دارد.

  • ارزیابی برخوردها: برای هر گام باید سه منطق بررسی کنیم: همان ستون، همان شیاه در ستون‌های قبل و تشابه قطری diagonal. معمولاً با استفاده از سه مجموعه یا آرایه boolean چک می‌کنیم که آیا ستون یا قطر قبلاً استفاده شده است.

  • پیاده‌سازی پایه: تابع بازگشتی Solve(row) که اگر row == N، یک راه‌حل پیدا شده است و آن را ذخیره می‌کند. در غیر این صورت، برای هر ستون از 0 تا N-1، اگر جایگاه امن است، حلقه را ادامه می‌دهد و دوباره Solve(row+1) را فراخوانی می‌کند.

  • نمایش نتیجه: پس از یافتن هر راه‌حل، آرایه شاه‌ها را چاپ می‌کنیم یا به یک ساختار گرافیکی ارسال می‌کنیم. در سی شارپ می‌توانید ماتریس یا لیست از مختصات را چاپ کنید.
  • روش BFS با استفاده از صف

  • تفاوت اصلی با DFS: به جای بازگشتی بودن،
  • ...

    🔒

    متن کامل این فایل در سایت اصلی قرار دارد

    برای مشاهده اطلاعات کامل، جزئیات دقیق و دانلود این فایل، لطفاً روی دکمه زیر کلیک کنید. تمامی محتوا به صورت کامل در لینک اصلی در دسترس شماست.

    📥 مشاهده جزئیات کامل و دانلود