נשלח בתאריך: 28 September 2008 בשעה 05:20 | | IP רשוּם
|
|
|
|
לגבי מערך החד ממדי זה לא בעיה, כיוון שניתן לתאר כל פתרון שהיית מממש בעבור בעיה זו בצורה דו מימדית באמצעות מערך חד ממדי. לדוגמא נגיד ולוח המשחק הוא 3X3 ונאמר שאתה רוצה למקם מלכה במיקום 1,1 אז אתה יכול למקם במערך במקום ה-0 את הספרה 1. ניתן לעשות זאת כיוון שחוקי המשחק מחייבים שלא תהיה יותר ממלכה אחת בכל שורה, לכן הצבה של מס' מסויים ייצג מיקום של מלכה אחת. זה לגבי הייצוג במערך חד ממדי.
לגבי פתרון הבעיה, לרוב הפתרונות שמלמדים בנויים בצורה רקורסיבית. יש כמה פתרונות מקובלים מעולם ה-AI, שגם הם לרוב רקורסיבים, ואלה שלא כנראה לא מתאימים לקורס שאתה לומד (בהנחה שזה לא קורס - AI). ישנו פתרון אחד שאולי יכול לעזור לך שמבוסס על רעיון שהוא די פשוט - הרעיון הוא לעבור על כל השורות מההתחלה עד הסוף, בכל שורה לנסות למקם בצורה אקראית מלכה. אם נמצא מיקום בו המלכה לא מאיימת על אף מלכה אחרת ממשיכים לשורה הבאה, אם לא קיים מיקום כזה בכלל חוזרים לשורה הקודמת.
דוגמא לאלגוריתם: 1. מקם את X על השורה הראשונה. 2. כל עוד X קטן שווה ממס' השורות בצע: 2.2 הצב ב-count אפס. 2.3 כל עוד count קטן ממס' העמודות בצע: 2.3.1 בחר בצורה אקראית עמודה להצבת המלכה. 2.3.2 הגדל את count ב-1. 2.3.3 אם המלכה אינה מאיימת על אף מלכה אחרת קדם את X ב - 1 (לשורה הבאה) ולך לצעד 2. 2.4 הוצא את המלכה מהשורה מס' X. 2.5 החסר מ - X אחד (חזור לשורה קודמת). 2.6 הוצא את המלכה מהשורה מס' X.
|