N королев решение проблемы

Рекурсия

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  
Просмотр кода

рекомендация

отwww.cnblogs.com/Hqx-curiosity/p/12150585.html