Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
ololololo
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 15
#1

Лабиринт на основе метода перебора с возвратом - Delphi

15.06.2012, 13:34. Просмотров 1250. Ответов 1
Метки нет (Все метки)

1) Разработать на основе массива символьных данных M[1..11,1..11] информационную модель лабиринта с тремя выходами. Стены лабиринта обозначать символом ‘H’, а проходы –символом пробел ‘ ‘. Перемещения объекта по лабиринту помечать символом ‘*’.
2) На основе метода перебора с возвратом разработать программу поиска выхода из лабиринта для объекта, размещенного в заданной начальной точке лабиринта. В алгоритме поиска использовать просмотр возможных направлений по часовой стрелке.
3) На основе предыдущей программы. разработать программу в которой обеспечить просмотр возможных направлений перемещения против часовой стрелки.

Вот пример:
http://www.cyberforum.ru/cpp-beginners/thread1741584.html
0
Миниатюры
Лабиринт на основе метода перебора с возвратом  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2012, 13:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Лабиринт на основе метода перебора с возвратом (Delphi):

Разработка приложения реализующего задачу перебора с возвратом
Задание для курсовой: Разработка приложения реализующего задачу перебора с...

Вызов метода с возвратом значения
Есть метод: +(NSString*)outputString:(NSString*)inputString { ...

С помощью нерекурсивного перебора с возвратом найти гамильтонов цикл в графе, заданном с помощью матрицы смежности.
using System; using System.Collections.Generic; using System.ComponentModel;...

Создание таблицы на основе перебора значений из других таблиц
Добрый день, уважаемые посетители форма. Прошу помощи в решении следующего...

Разработать программу планирования пути робота на основе алгоритма полного перебора
Разработать программу планирования пути робота на основе алгоритма полного...

1
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
16.06.2012, 02:25 #2
Лучший ответ Сообщение было отмечено ololololo как решение

Решение

Вот типа того: Это, кажется, перебор с возвратом и выбор направления по часовой стрелке:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
Type
  TLabirint = Array[1..11] Of String[11];
Var
  M : TLabirint =
     ('HHHHHH HHHH',
      'HHH       H',
      'HHH HHHHHHH',
      'HHH HH   HH',
      'HHH HHHH   ',
      'HH  HH   HH',
      'HH       HH',
      'HH HHHHH  H',
      'HHHHHHHHH H',
      'HH        H',
      'HH HHHHHHHH');
 
Procedure WriteLab(a:TLabirint);
Var
  i : Integer;
Begin
  WriteLn;
  For i:=1 To 11 Do
  WriteLn(a[i]);
End;
 
Procedure Move(a:TLabirint;x,y:Integer);
Begin
  If a[x][y]=' ' Then
  Begin
    a[x][y]:='*';
    If ((x=1) Or (x=11) Or (y=1) Or (y=11)) Then
    WriteLab(a) Else
    Begin
      Move(a,x,y+1); //   ->
      Move(a,x+1,y); //  вниз
      Move(a,x,y-1); //   <-
      Move(a,x-1,y); //   вверх 
    End;
    a[x][y]:=' ';
  End;
End;
 
begin
  Move(M,6,3);
  ReadLn;
end.
Думаю дальше.

Добавлено через 25 минут
А тут можно задавать позицию и направление обхода:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
Type
  TLabirint = Array[1..11] Of String[11];
Var
  M : TLabirint =
     ('HHHHHH HHHH',
      'HHH       H',
      'HHH HHHHHHH',
      'HHH HH   HH',
      'HHH HHHH   ',
      'HH  HH   HH',
      'HH       HH',
      'HH HHHHH  H',
      'HHHHHHHHH H',
      'HH        H',
      'HH HHHHHHHH');
 
Procedure WriteLab(a:TLabirint);
Var
  i : Integer;
Begin
  WriteLn;
  For i:=1 To 11 Do
  WriteLn(a[i]);
End;
 
Procedure Move(a:TLabirint;x,y,n:Integer);
Begin
  If a[x][y]=' ' Then
  Begin
    a[x][y]:='*';
    If ((x=1) Or (x=11) Or (y=1) Or (y=11)) Then
    WriteLab(a) Else
    If n=0 Then
    Begin
      Move(a,x,y+1,n);  //   ->
      Move(a,x+1,y,n);  //  вниз
      Move(a,x,y-1,n);  //   <-
      Move(a,x-1,y,n);  //  вверх
    End Else
    Begin
      Move(a,x-1,y,n);  //  вверх
      Move(a,x,y-1,n);  //   <-
      Move(a,x+1,y,n);  //  вниз
      Move(a,x,y+1,n);  //   ->
    End;
    a[x][y]:=' ';
  End;
End;
 
Var
  x0,y0,no : Integer;
begin
  //Русский текст в консоли...
  //Установить в свойствах щрифт   Lucida Console
  SetConsoleCP(1251);
  SetConsoleOutPutCP(1251);
 
  WriteLn('Задайте координаты начальной позиции [строка столбец]: ');
  Repeat
    ReadLn(x0,y0);
    If ((x0>=1) And (x0<12) And (y0>=1) And (y0<12)) Then
    If (M[x0][y0]=' ') Then Break Else
    WriteLn('Позиция занята.') Else
    WriteLn('Выход за пределы лабиринта.');
    WriteLn('Выберите другую позицию');
    WriteLn;
  Until False;
 
  WriteLn;
  WriteLn('Задайте направление обхода.');
  WriteLn('0 - по часовой стрелке, не 0 - против часовой стрелки:');
  ReadLn(no);
 
  Move(M,x0,y0,no);
  ReadLn;
end.
Лучше уже сегодня ничего не придумаю.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2012, 02:25
Привет! Вот еще темы с решениями:

Функция с возвратом указателя и возвратом ссылки
Найти максимальный и минимальный элемент в двумерном массиве и указать их...

Классификатор спама на основе Метода Фишера
Здраствуйте, нужно мне нужно сделать классификатор спама на основе Метода...

Реализация поиска на основе метода хеширования
Ребята, если кто знает где можно найти толковые примеры(листинги) с применением...

Написать архиватор на основе метода Хаффмана
Вот собственно задача состоит в том что нужно написать программу(архиватор)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru