📁 C و C++کد:37814امتیاز:4.8📅 بروزرسانی: هفته پیش

الگوریتم و سورس مساله هشت وزیر

دانلود فایل اصلی

برای دریافت فایل کامل روی دکمه زیر کلیک کنید

دانلود و مشاهده جزئیات
ℹ️
برای مشاهده محصول و توضیحات به ادامه مطلب بروید

توضیحات

الگوریتم و سورس مساله هشت وزیر
بخشی از متن اصلی :
در این دسته روشها مهره ها رو یکی یکی و به صورت بازگشتی روی صفحه طوری می چینیم که مطمئن باشیم با مهره های قبلی تداخل نداره و شرط مساله برآورده می شه. معمولا از سطر اول صفحه شروع می کنیم به قرار دادن مهره ها. پر واضحه که هر سطر فقط می تونه یه مهره رو تو خودش جا بده. مهره سطر دوم رو طوری قرار می دیم که توسط مهره سطر اول تهدید نشه. برای این کار خانه های مختلفی از سطر رو می شه انتخاب کرد. برای نظم داشتن کارهامون فرض می کنیم همیشه انتخاب خانه ها از سمت چپ سطر شروع می شه. به عبارت دیگه با شروع از سمت چپ سطر اولین خانه ای که شرط رو برآورده کنه انتخاب می کنیم. به همین ترتیب سطرهای بعدی رو هم می چینیم. اگر به سطری رسیدیم که بر اساس چیدمان سطرهای قبلی هیچ خانه امنی برای مهره وجود نداشت ( یعنی همه خانه ها توسط مهره های قبلی تهدید می شدن ) یه مرحله به عقب بر می گردیم و مهره سطر قبل رو جابجا می کنیم. این کار هم با حرکت مهره به اولین خانه سمت چپ موقعیت فعلی که شرط رو برآورده کنه، انجام می شه. با ادامه دادن این روال و با جابجا کردن مهره ها به صورت منظم و بازگشتی تمامی حالتهای ممکنه به دست می یان.
مساله هشت وزیر : ما مساله رو در حالت کلی در نظر می گیریم. یعنی زمانی که ابعاد صفحه شطرنج n در n و تعداد مهره ها n هستش. ( n > 3 ) روشهای مختلفی برای پیدا کردن جواب وجود داره. یکی از این روشها چیدن تصادفی مهره ها روی صفحه شطرنجه! به عبارت دیگه n مهره رو به صورت تصادفی در خانه های مختلف صفحه قرار می دیم و بررسی می کنیم که آیا شرط مساله رو برآورده می کنن یا نه؟ این روش بسیار سریع ما رو به جواب می رسونه. اما ایرادی که داره نمی شه مطمئن بود بشه به همه حالتهای چینش دست پیدا کرد. در صفحه 8 در 8 شطرنج این مساله 92 جواب مختلف داره. شما ممکنه روش تصادفی رو هزار بار به کار ببرید، اما نتونید همه 92 حالت ممکنه رو به دست بیارید. این روش زمانی مفیده که پیدا کردن یه جواب برای ما کافی باشه.
برای پیاده سازی چنین الگوریتمی و تشخیص اینکه چه خانه هایی از سطر امن هستن روشهای مختلفی وجود داره. ساده ترینشون اینه که هر بار تمامی خانه هایی رو که امکان تهدید شدن از اونها وجود داره بررسی کنیم تا از قرار نداشتن مهره وزیر در اونها مطمئن باشیم. اما این روش اصلا کارا و بهینه نیست.
روش دیگه تعریف کردن صفحه شطرنج به صورت یه آرایه n در n هستش که خونه های امن و غیر امن با علامتگذاری مشخص می شن. هر بار که مهره ای رو صفحه قرار می گیره تمام خونه هایی که توسط این مهره تهدید می شن به صورت غیر امن علامتگذاری می شن. به این ترتیب می شه فهمید که هر خونه با توجه به چینش مهره های قبلی امن هست یا نه؟ اما این روش هم معایبی داره که باعث می شه به روش سوم رجوع کنیم. برای آشنایی با این معایب کافیه سعی کنید کد برنامه رو بنویسید!
در روش سوم که من ازش استفاده کردم، برای علامتگذاری خانه های امن و غیر امن از شیوه دیگه ای بهره می بریم. به این ترتیب که اقطار راست به چپ، چپ به راست و ستونها با شماره هایی مشخص می شن که کار علامتگذاری رو بسیار ساده می کنن. این روش بدون شک از کاراترین روشهای رسیدن به جواب مساله ماست. هم سرعت اجرای بالایی داره و هم حافظه مصرفی بسیار کم!
کدی که به زبان ++C درباره این مساله نوشته شده با استفاده از روش سوم تعداد جوابهای ممکن – و نه خود جوابها – برای مقادیر مختلف n رو مشخص می کنه. به عنوان مثال اگر n رو 8 وارد کنید خروجی برنامه 92 خواهد بود. توصیه می کنم برای nهای بزرگ برنامه رو امتحان نکنید! اگر n رو 16 وارد کنید بعد از گذشتن زمان زیادی عدد 14772512 روی صفحه نمایش چاپ می شه. یعنی در صفحه شطرنج 16 در 16 حدود ۱۵ میلیون حالت مختلف برای چیدمان صحیح وجود داره!!

دسته‌بندی‌های سایت

📂 ... pdf (رمان،شعر،داستان)...📂 ... PowerPoint پاورپوینت...📂 معارف اسلامی (آموزش_و_پژوهش)...📂 معماری (آموزش_و_پژوهش)...📂 کامپیوتر...📂 روانشناسی و مشاوره (آموزش_و_پژوهش)...📂 ... پروژه های تحصیلی و آموزشی...📂 مدیریت (آموزش_و_پژوهش)...📂 🔺... پژوهش ها و محتوای مجازی...📂 حقوق (آموزش_و_پژوهش)...📂 حسابداری (آموزش_و_پژوهش)...📂 امتحانات نهایی...📂 اقتصاد (آموزش_و_پژوهش)...📂 برق و مخابرات (آموزش_و_پژوهش)...📂 تاریخ (آموزش_و_پژوهش)...📂 کامپیوتر و IT (آموزش_و_پژوهش)...📂 ادبیات (آموزش_و_پژوهش)...📂 علوم تربیتی (آموزش_و_پژوهش)...📂 پزشکی (آموزش_و_پژوهش)...📂 ... psdو (نمونه قرارداد،طرح،الگو)...📂 مکانیک (آموزش_و_پژوهش)...📂 گوناگون...📂 جغرافیا (آموزش_و_پژوهش)...📂 هنر و گرافیک (آموزش_و_پژوهش)...📂 عمران و نقشه برداری (آموزش_و_پژوهش)...📂 بهداشت (آموزش_و_پژوهش)...📂 تربیت بدنی (آموزش_و_پژوهش)...📂 مواد و متالورژی (آموزش_و_پژوهش)...📂 کشاورزی و محیط زیست (آموزش_و_پژوهش)...📂 علوم اجتماعی (آموزش_و_پژوهش)...📂 علوم سیاسی (آموزش_و_پژوهش)...📂 شهرسازی (آموزش_و_پژوهش)...📂 شیمی (آموزش_و_پژوهش)...📂 صنایع (آموزش_و_پژوهش)...📂 استخدامی...📂 ... پروژه های صنعتی و احداث...📂 فیزیک (آموزش_و_پژوهش)...📂 هنر و گرافیک (کارآموزی_و_گزارشات)...📂 پیام نور...📂 ریاضی (آموزش_و_پژوهش)...📂 معماری (کارآموزی_و_گزارشات)...📂 موبایل و اندروید...📂 برق و مخابرات (کارآموزی_و_گزارشات)...📂 مدیریت (مقالات_و_تحقیقات)...📂 امار و احتمال (آموزش_و_پژوهش)...📂 عمران و نقشه برداری (کارآموزی_و_گزارشات)...📂 زبانهای خارجه (آموزش_و_پژوهش)...📂 صنایع غذایی (آموزش_و_پژوهش)...📂 فلسفه و منطق (آموزش_و_پژوهش)...📂 عمران و نقشه برداری (مقالات_و_تحقیقات)...📂 ... پروژه های تولیدی و اشتغال...📂 زیست شناسی (آموزش_و_پژوهش)...📂 مکانیک (کارآموزی_و_گزارشات)...📂 کامپیوتر و IT (کارآموزی_و_گزارشات)...📂 صنایع (کارآموزی_و_گزارشات)...📂 پرستاری (آموزش_و_پژوهش)...📂 ... پروژه های غذایی و کشاورزی...📂 حسابداری (کارآموزی_و_گزارشات)...📂 روانشناسی و مشاوره (مقالات_و_تحقیقات)...📂 زمین شناسی (آموزش_و_پژوهش)...📂 ... پروژه های تحقیق و ترجمه مقاله...📂 مدیریت (کارآموزی_و_گزارشات)...📂 علوم تربیتی (کارآموزی_و_گزارشات)...📂 کشاورزی و محیط زیست (کارآموزی_و_گزارشات)...📂 کنکور سراسری...📂 بیمه و بانکداری (آموزش_و_پژوهش)...📂 نفت (آموزش_و_پژوهش)...📂 عمران و نقشه برداری (نظام_مهندسی)...📂 برق و مخابرات (مقالات_و_تحقیقات)...📂 کامپیوتر و IT (مقالات_و_تحقیقات)...📂 کنکور ارشد و دکتری...📂 مهندسی پزشکی (آموزش_و_پژوهش)...📂 دیگر...📂 شیمی (کارآموزی_و_گزارشات)...📂 ... پروژه های پرورش و دامپروری...📂 علوم دامی (آموزش_و_پژوهش)...📂 ... پروژه های تاسیس و خدمات...📂 پزشکی (مقالات_و_تحقیقات)...📂 حقوق (کارآموزی_و_گزارشات)...📂 مهندسی معدن (آموزش_و_پژوهش)...📂 حسابداری (مقالات_و_تحقیقات)...📂 تغذیه (آموزش_و_پژوهش)...📂 بانک ها...📂 🔺قالب و پلاگین...📂 علوم اجتماعی (مقالات_و_تحقیقات)...📂 C و C++...📂 پزشکی و پرستاری (کارآموزی_و_گزارشات)...📂 دندانپزشکی (آموزش_و_پژوهش)...📂 سی شارپ...📂 ... پروژه های پزشکی و دارو...📂 معماری (نظام_مهندسی)...📂 مامایی (آموزش_و_پژوهش)...📂 ویژوال بیسیک...📂 نظام مهندسی...📂 نفت (کارآموزی_و_گزارشات)...📂 نساجی (آموزش_و_پژوهش)...📂 کشاورزی و محیط زیست (مقالات_و_تحقیقات)...📂 طراحی وب...📂 انیمیشین و وکتور (آموزش_و_پژوهش)...📂 داروسازی (آموزش_و_پژوهش)...📂 مهندسی شیلات (آموزش_و_پژوهش)...📂 Android...📂 ICDL...📂 کشاورزی و محیط زیست (کتب_و_جزوات)...📂 مهندسی آب (کتب_و_جزوات)...📂 Matlab...📂 مکانیک (نظام_مهندسی)...📂 مهندسی بهداشت (کتب_و_جزوات)...📂 کتابداری (آموزش_و_پژوهش)...📂 مواد و متالوژی و معدن (کارآموزی_و_گزارشات)...📂 آیین نامه رانندگی...📂 PHP...📂 داروسازی (کارآموزی_و_گزارشات)...📂 ... پروژه های کارآموزی و کارورزی...📂 دستگاه های اجرایی...📂 مهندسی آب و هواشناسي (کارآموزی_و_گزارشات)...📂 برق و مخابرات (نظام_مهندسی)...📂 ... پروژه های کارآفرینی و توجیهی...📂 وردپرس...📂 شرکت گاز...📂 اسمبلی...📂 Visual Basic.net...📂 وزارت نیرو...📂 شرکت نفت...📂 HTML...📂 ASP.net...📂 دلفی...📂 مصاحبه حضوری...📂 طراحی (کتب_و_جزوات)...📂 شهرداری...📂 علوم نجوم (آموزش_و_پژوهش)...📂 پایتون...📂 🔺زبان برنامه نویسی و اسکریپت...📂 SQL Server...📂 جاوا...📂 اسکریپت...

جستجو در بین فایل‌ها