Menambah jawaban lain: membuat array dua dimensi hanya mempersulit kode.
Anda hanya perlu vektor ukuran 8 untuk papan catur biasa. Atau 8 + 1 jika suka posisi C 1 adalah 0, hanya untuk menyederhanakan kode, dan berurusan dengan 1-8 dan bukan 0-7.
Jika Anda berpikir tentang x menjadi posisi Anda dalam array, dan y menjadi konten posisi. misalnya papan [1] = 8 berarti ratu pertama berada di [1,8].
Dengan cara itu, Anda hanya perlu memeriksa validasi kolom.
Pada waktu di fakultas, saya menemukan buku yang sangat tua (60-an?), Tentang algoritma yang diterapkan di Dartmouth BASIC, yang mengimplementasikan masalah 8 ratu menggunakan memori yang lebih sedikit (karena setua itu, masuk akal).
Sejauh yang saya ingat, itu menggunakan ide vektor, dan pada dasarnya kasar memaksa semua posisi di papan dengan dua siklus FOR. Untuk memeriksa validitas posisi, ia menggunakan loop ketiga, siklus WHILE di setiap posisi kembali dalam vektor, dan memeriksa angka yang sama, atau untuk formula menggunakan operasi tangen untuk memeriksa diagonal.
Sayangnya, saya kehilangan jejak buku itu ...
Algoritma Said menemukan semua solusi untuk masalah n-queen.