|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.10.2012, 15:49 | #1 |
Новичок
Джуниор
Регистрация: 09.10.2012
Сообщений: 2
|
Ладья на шахматной доске C++
Здравствуйте Уважаемые форумчане,
Хотел бы попросить у Вас помощи в решении задачки на этот семестр, к сожалению сам не владею программированием =( 1. Шахматное поле размером 5х5 (S=k*k) => (k>=5) 2. Имеются шахматные фигуры в количестве 23 шт. (k^2-1>q) 3. Имеется ладья (1 шт.) 4. F [1...q] = массив координат шахматных фигур на шахматной доске S 5. J = координаты ладья на шахматной доске S Задача: Нужно сбить ладьей (начальное местонахождение не имеет значение, в принципе как и местонахождения всех 23 фигур) все фигуры. Ладья подчиняется законам шахмат (за один ход можно сбить 1 фигуру, перескакивать через фигуру нельзя). В целом нет никаких условий на счет как будет ходить ладья, или ещё что то, просто необходимо сбить все фигуры. Учитывая что в задаче проситься сделать это лучшим способом, то бишь за меньшее количество ходов, но чисто логично - 23 фигуры=23 хода ладьей, но в целом программа после удара какой то фигуры может перейти на пустую клетку, и естественно это тоже нужно видно включить в программу. Общее количество ходов ограниченно 2q (в нашем случае 46 ходов) Выходной алгоритм: Кратчайшее последовательность полей, на которых ладья захватывает все шахматные фигуры. Выход состоит из двух текстовых файлов. Первый описывает начальную конфигурацию, а второй последовательности полей, где ладья останавливается во время захвата фигуры. Заранее благодарен Вам за ответ! С уважением, |
09.10.2012, 20:11 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Предполагаю, что алгоритм мог бы быть таким:
Пригоняем ладью к центру - попутно сбиваем фигуры. Далее по спирали. Поскольку пустые поля не играют роли, то число ходов может быть равно числу установленных фигур. Не более того. Или гоним ее на край доски и далее снова по спирали. Как-то так ...
Как-то так, ...
|
09.10.2012, 20:15 | #3 | |
Новичок
Джуниор
Регистрация: 09.10.2012
Сообщений: 2
|
Цитата:
Логику выполнения я уже знаю, можно и по спирали, можно "змейкой", по любому лучше чем 23 хода не будет, так как 1 ход = 1 сбитая фигура. Но не более 46 ходов. Честно говоря вопрос именно стоит в реализации этой задачи в виде программного кода так как в программировании я вообще никакой Если есть такая возможность, помогите пожалуйста =) Ещё раз спасибо за ответ! |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Соединение двух точек линией на шахматной доске | #include <Markus> | Общие вопросы C/C++ | 2 | 12.06.2012 10:51 |
создать класс "Ладья на шахматной доске" в C++ | kickerb | Помощь студентам | 2 | 23.06.2011 21:52 |
расставить 8 ладей на шахматной доске | marry | Помощь студентам | 2 | 19.11.2010 22:08 |
Си/Си++ Слоны на шахматной доске | Маришка_Курносова | Помощь студентам | 1 | 12.09.2010 01:02 |
монетки на шахматной доске! | grimm_jow | Общие вопросы C/C++ | 2 | 31.01.2010 10:27 |