fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int cnt=0;
  5.  
  6. void gen(int a[8], int pos)
  7. {
  8. if (pos<8){ // если не все столбцы определены
  9. for(int i=0;i<8;i++){
  10. int correct=1;
  11. for(int j=0;j<pos;j++)
  12. if(a[j]==i || abs(a[j]-i)==pos-j)correct=0; // первое условие - несовпадение строк, второе несовпадение диагоналей
  13. if( correct){
  14. a[pos]=i; // если для текущего столбца вариант обнаружен сохраняем вариант
  15. gen(a,pos+1); // и рекурсивно заполняем следующий
  16. }
  17. }
  18. }else{ // если сюда попали - все столбцы определы, а заодно и диагонали проверены
  19. cnt++;
  20. }
  21. }
  22.  
  23. int main()
  24. {
  25. int a[8];
  26. gen(a,0);
  27. cout<<cnt;
  28. }
  29.  
Success #stdin #stdout 0s 4372KB
stdin
Standard input is empty
stdout
92