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: תמונות מראה, הנספרות כשני פתרונות. כל בחירה אחרת מציבה שתי מלכות באותה עמודה או באותו אלכסון.
challenge icon

שאלת המשך

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

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

בדיקה #1

בדיקה #2

ארגומנט

n = 4

הפלט הצפוי

2