Рекурсия
1 // Решение N ферзей 2 // рекурсивный метод 3. #Include <stdio.h> 4. #Include <stdlib.h> 5. Const INT N = 20 ; 6 . INT Q [N]; . 7 недействительными DISP ( INT п) { . 8 статические INT COUNT = 0 ; 9. INT I, 10 е ( " % d из го раствора: " , ++ COUNT); . 11 для (I = . 1 , я <= п, я ++ ) 12 е ( "(% D% D) "I, Q [I]); 13 Е ( " \ п " ); 14 } 15 INT место ( INT K, INT J) { // Тест (к,) положение J может быть размещен Королева 16 INT I = 1. ; . 17 это время (I < К) { 18 ЕСЛИ ((Q [I] == J) || (ABS (Q [I] , - J) == ABS (Ки))) // тот же столбец или же диагонали . 19 возврата 0 ; 20 Я ++ ; 21 } 22 возврата 1. ; 23 } 24 пустот Queen ( INT K, INT н-) { // помещается Queen 1 ~ к рекурсивной реализации 25 INT J; 26 ПЧ (К> н-) 27 DISP (п); 28 остальное { 29 для (J = . 1 ; J <= п; j ++ ) { 30 ПЧ (место (K, J)) { // найти подходящее положение (K, J) на к-й строке 31 Q [K] = J; 32 Королева (к + 1. , п); 33 } 34 } 35 } 36 } 37 [ INT Основной () { 38 INT п; 39 Е ( " Пожалуйста , введите значение N \ NN = " ); 40 Scanf ( " % D " , & п); 41 Королева ( 1. , П); 42 возврата 0 ; 43 } 44