Menu
CoddyTech

N-Queens II

מלכה על לוח שחמט תוקפת כל משבצת בשורה שלה, בעמודה שלה ולאורך שני האלכסונים שלה, גם כשהמשבצת רחוקה. נתון לך מספר שלם n. החזר את מספר הדרכים להציב n מלכות על לוח n × n כך שאף שתי מלכות לא יתקפו זו את זו.

שתי דרכים נחשבות שונות אם יש משבצת שבה באחת מהן יש מלכה ובשנייה היא ריקה. לכן לוח ותמונת המראה שלו נחשבים לשתי דרכים, אף על פי שהם נראים זהים.

פונקציה

totalNQueens(n: integer) → integer
ninteger
גודל הלוח ומספר המלכות
מחזירהinteger
מספר הדרכים להציב את המלכות כך שאף אחת מהן לא תתקוף אחרת

אילוצים

  • 1 ≤ n ≤ 12
  • התשובה עבור n = 12 היא 14,200, ולכן היא נכנסת למספר שלם בן 32 סיביות.

דוגמאות

קלט
n = 4
פלט
2
הסבר
אם כותבים מלמעלה למטה את העמודה שבה נמצאת המלכה בכל שורה, שני הלוחות הם 1, 3, 0, 2 ו־2, 0, 3, 1. כל אחד מהם הוא תמונת ראי של האחר, והם נחשבים לשתי דרכים. כל בחירה אחרת מציבה שתי מלכות באותה עמודה או על אותו אלכסון.

lock icon+10 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

האם אפשר לספור רק את הלוחות שנותרים שונים לאחר סיבוב ושיקוף של הלוח? עבור n = 8, 92 הלוחות מתחלקים ל־12 קבוצות כאלה.

איפוס הקוד
def totalNQueens(n):
    # כתבו כאן את הקוד
מקרי בדיקה

מקרה 1

מקרה 2

קלט

n = 4

צפוי

2