کسی می تونه به من در نوشتن برنامه هشت وزیر در C کمک کنه؟
کسی می تونه به من در نوشتن برنامه هشت وزیر در C کمک کنه؟
الگوریتم 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 را به پارامترهای زیر صدا بزنید:
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Last edited by hamidreza_buddy; 28-04-2007 at 21:30.
سلام میشه یکم بیشتردر مورد این الگریتم توضیح بدین.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)