סביר להניח שחלק מכירים וחלק לא...בכול מקרה משהוא נחמד שקיבלנו.
צריך לקחת לוח שח מט 8X8 ולהציב בו את המלכות בצורה כזאת שהם לא יאיימו אחת על השניה ולהדפיס את הקומבינציה הזאת.
קיימות 92 קומבינציות .
כמובן שהפתרון הוא ברקורסיה.
מי שרוצה לנסות לפתור שלא יסתכל למטה
הפתרון :
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/** * This method is checking a good combination for setting the queens on the board * in case that none of them i in threat by the others using recursive calls * @param m - holding the row coordination * @param n - holding the columns coordination * @param validSet - holding a boolean value for the valid set * @param isGoodCombination - holding a boolean value for good combination */ public void QueenSets (int m,int n,boolean validSet,boolean isGoodCombination) { //stop condition if (m==8&&isGoodCombination) { m_Counter++; System.out.println ("Solution #"+m_Counter); System.out.println ("------------"); BoardPrint(); // printing the board System.out.println (""); } else { for (;n<ColAndRowNumber;n++) // running on the columns for queen valid set { validSet = ValidSet (m,n); // checking if its a valid set if (validSet) { m_Board = 'X'; // setting the queen if (m<ColAndRowNumber) // checking that the board limits are OK { if (m==7) // for the stopping condition { isGoodCombination=true; } QueenSets (m+1,0,false,isGoodCombination); // recursive call } m_Board = 'O'; // clearing the board from the queen } } } }
|
X מסמן את המלכות בלוח
O מסמן את מקומות הרייקים