fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. bool board[15][15];
  6. int n, result = 0;
  7.  
  8. bool search(int x, int y)
  9. {
  10. for (int i = 0; i < n; i++)
  11. {
  12. if (board[i][y]) return true; // 세로 열 체크
  13.  
  14. // 왼쪽 (위) 오른쪽(아래) 대각선 체크
  15. if (x - i >= 0 && y - i >= 0 && board[x - i][y - i]) return true; //2사분면
  16.  
  17. // 왼쪽(아래) 오른쪽(위) 대각선 체크
  18. if (x - i >= 0 && y + i < n && board[x - i][y + i]) return true; //1사분면
  19. }
  20. return false;
  21. }
  22.  
  23. void solution(int p)
  24. {
  25. if (p == n)
  26. {
  27. result++;
  28. return;
  29. }
  30.  
  31. for (int y = 0; y < n; y++)
  32. {
  33. if (!board[p][y])
  34. {
  35. if (search(p, y)) continue;
  36. board[p][y] = true;
  37.  
  38. solution(p + 1);
  39. board[p][y] = false;
  40. }
  41. }
  42. }
  43.  
  44. int main(void)
  45. {
  46. cin >> n;
  47. solution(0);
  48. cout << result;
  49. return 0;
  50. }
Success #stdin #stdout 0s 4704KB
stdin
8
stdout
92