Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Помогите решить задачу "Морской бой"


Автор: Igor2012 3.10.2016, 20:04
Помогите решить задачу. ОЧЕНЬ НУЖНО. зарание спасибо.
Дано размерность в клетках квадратного игрового поля N (1 <N <11) и P (0 <P <N) - максимальное количество ячеек крупнейшего корабля. По правилам корабли не касаются сторонами и их количество растет на 1 с уменьшением на 1 количества ячеек на корабль начиная от единого большого корабля и заканчивая одноклеточными кораблями. Например, если P = 4, тогда количество кораблей 10. 1 корабль - 4 клетки, 2 корабля - по 3 клетки, 3 корабля - по 2 клетки и 4 корабля - по 1 клетке.
   Зная координаты расположения кораблей и шаг N-1 нужно рассчитать наименьшее количество ходов, которая позволит поразить все корабли хотя бы один раз. Шаг выстрелов начинается от левого верхнего угла игрового поля - ячейки с координатами 1 1, то есть ячейки 1 N-1. При достижении края игрового поля шаги отчисляются в следующей строке учитывая незаконченность предыдущего шага, а при достижении правого нижнего угла происходит возврат на левый верхний угол игрового поля учитывая незаконченность предыдущего хода. Например, при значении N = 3 координаты выстрелов такие: 1 2, 2 1, 2  3, 3 2, 1  1, 1 3, 2  2, 3 1, 3 3.

   Входные данные:
   В файле battleship.dat в первой строке через пробел записаны два целых числа N, P.
   В следующих строках через пробел записано по четыре целых числа - координаты расположения кораблей, координаты его начала и конца (x1 <= x2, y1 <= y2).

   Исходные данные:
   В файл battleship.sol нужно вывести единственное число - количество выстрелов.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)