Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2014, 12:57   #1
kostan3
- Дорогой, а ты ку
Форумчанин
 
Регистрация: 06.10.2012
Сообщений: 181
По умолчанию Конная прогулка

есть задача http://acmp.ru/index.asp?main=task&id_task=690
вот условие
Цитата:
(Время: 1 сек. Память: 16 Мб Сложность: 71%)

Требуется выполнить обход прямоугольного поля, перемещаясь в нем по правилам шахматного коня. В лабиринте имеются клетки, перемещение в которые невозможно. Начальная позиция коня определена. Необходимо посетить все клетки (в которые переход возможен) без повторных заходов. Гарантируется, что такой обход существует.
Входные данные

В первой строке входного файла INPUT.TXT содержится два натуральных числа N и M – размеры поля (N,M ≤ 100). Далее, следует карта поля: N строк по M символов в каждой строке. Символом «.» (точка) обозначается пустое пространство. Символ «X» указывает на то, что перемещение в данную клетку поля запрещено. Начальная позиция коня задается единственным в поле символом «K».
Выходные данные

В выходной файл OUTPUT.TXT выведите матрицу обхода поля, в каждой ячейке которого должен быть вписан номер шага ее посещения (начиная с единицы). Клетки, помеченные как «X» во входных данных следует при выводе помечать нулевым значением. Числа следует разделять пробелами, допускается использовать лишние пробелы. В случае неоднозначного решения следует вывести любое.
Примеры
№ INPUT.TXT OUTPUT.TXT
1 5 5
K....
.....
.....
.....
.....

1 14 9 20 3
24 19 2 15 10
13 8 25 4 21
18 23 6 11 16
7 12 17 22 5

2 6 8
X......X
..K..X..
.....X..
..XXXX..
........
X......X

0 11 32 23 2 21 30 0
33 24 1 10 31 0 3 20
12 9 38 25 22 0 16 29
37 34 0 0 0 0 19 4
8 13 26 35 6 15 28 17
0 6 7 14 27 18 5 0

3 9 9
....K....
.........
..XXXXX..
..X...X..
..X.X.X..
..X...X..
..XXXXX..
.........
.........

15 18 45 32 1 20 47 34 3
44 31 16 19 46 33 2 21 48
17 14 0 0 0 0 0 4 35
30 43 0 57 60 63 0 49 22
13 56 0 62 0 58 0 36 5
42 29 0 59 64 61 0 23 50
55 12 0 0 0 0 0 6 37
28 41 10 53 26 39 8 51 24
11 54 27 40 9 52 25 38 7
как решить?
kostan3 вне форума Ответить с цитированием
Старый 07.07.2014, 13:44   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

При помощи дерева обхода.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 07.07.2014, 16:04   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

http://ru.wikipedia.org/wiki/%C7%E0%...5_%EA%EE%ED%FF
pu4koff вне форума Ответить с цитированием
Старый 07.07.2014, 18:43   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Что конкретно не получается?
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц