Advertisement
-Peer-

Дана расстановка 8 ферзей на доске. Есть ли среди них па...↓

Aug 24th, 2019
470
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.23 KB | None | 0 0
  1. /*
  2. Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них пара бьющих друг друга.
  3. Формат входных данных
  4.  
  5. Программа получает на вход восемь пар чисел, каждое число от 1 до 8 - координаты 8 ферзей.
  6. Формат выходных данных
  7. Если ферзи не бьют друг друга, выведите слово NO, иначе выведите YES.
  8. Sample Input 1:
  9.  
  10. 1 7
  11. 2 4
  12. 3 2
  13. 4 8
  14. 5 6
  15. 6 1
  16. 7 3
  17. 8 5
  18. Sample Output 1:
  19.  
  20. NO
  21. Sample Input 2:
  22.  
  23. 1 8
  24. 2 7
  25. 3 6
  26. 4 5
  27. 5 4
  28. 6 3
  29. 7 2
  30. 8 1
  31. Sample Output 2:
  32.  
  33. YES
  34. */
  35.  
  36. #include <iostream>
  37. #include <vector>
  38.  
  39. using namespace std;
  40.  
  41. const int DIM = 8; // DIM — количество ферзей и сторона шахматной доски (количество клеток на стороне).
  42.  
  43. int main () {
  44.     bool Dead = true; // предполагаем, что все ферзи в «мертвой» зоне
  45.     vector <int> x (DIM), y (DIM);
  46.     /* INPUT */
  47.     for (int i = 0; i < DIM; i++)
  48.         cin >> x [i] >> y [i];
  49.     /* PROCESSING */
  50.     for (int i = 0; i < (DIM - 1) && Dead; i++)
  51.         for (int j = i + 1; j < DIM && Dead; j++) { // простой перебор пар ферзей
  52.             int dex = x [i] - x [j]; // ± расстояние по горизонтали
  53.             int dey = y [i] - y [j]; // ± расстояние по вертикали
  54.             if (0 == dex || 0 == dey || dex == dey || -dex == dey)
  55.                 Dead = false; // пара «бьющихся» ферзей обнаружена!
  56.         }
  57.    
  58.     /* OUTPUT */
  59.     cout << (Dead ? "NO" : "YES"); // ответ на задачу
  60.     return 0;
  61. }
  62.  
  63. /*
  64. ✓ ПРИМЕЧАНИЕ: программа может быть адаптирована для квадратной доски с произвольной стороной. Для этого достаточно изменить значение константы DIM.
  65. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement