ورود

نسخه کامل مشاهده نسخه کامل : کمک در مورد برنامه هشت وزیر



behnam_c++
28-04-2007, 21:04
کسی می تونه به من در نوشتن برنامه هشت وزیر در C کمک کنه؟

hamidreza_buddy
28-04-2007, 21:20
الگوریتم 8 وزیر (Eight Queens):

این الگوریتم از دو تابع تشکیل شده (البته شبه کد است. آن را تبدیل کنید به C)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حل این مسئله هشت مرحله دارد:
*در row1 ملکه بعدی را در چه ستونی قرار دهیم که تهدید نشود.
*در row2 ملکه بعدی را در چه ستونی قرار دهیم که تهدید نشود.
.
.
*در row8 ملکه بعدی را در چه ستونی قرار دهیم که تهدید نشود.

که در هر مرحله جواب یکی از ستون ها است.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

تنها چیزی که ما لازم داریم این است که یک تابع داشته باشیم (Empty) که چک کند آیا فلان خانه توسط وزیری تهدید می شود یا نه (وزیرهای قبلی در خانه های j<i آرایه هستند). به این صورت:
* دو وزیره در یک ستون اند اگر t[i]==t[j]
* دو وزیر در یک قطر (اصلی) اند اگر t[i]-t[j]==i-j
* دو وزیر در یک قطر (فرعی) اند اگر t[j]-t[i]=i-j

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

برای گرفتن جواب، تابع Eight_Queens را به پارامترهای زیر صدا بزنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mo.mo
21-05-2009, 11:43
سلام میشه یکم بیشتردر مورد این الگریتم توضیح بدین.