Форум программистов, компьютерный форум CyberForum.ru

Создать программу, отыскивающую проход по лабиринту - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ icu и U_ILLEGAL_ARGUMENT_ERROR http://www.cyberforum.ru/cpp-beginners/thread912359.html
Всем привет! Пытаюсь за использовать библиотечку icu, всё вроде как собралось, написал тестовое прилжение: #include <iostream> #include <conio.h> #define U_STATIC_IMPLEMENTATION #include <icu/icu_lib.h> #include <icu/icu_i18n_lib.h>
C++ Работа с файлами(отсутствие библиотеки dir.h) Не могу понять почему V.S. 12 и V.S. 2005 не может найти библиотеку dir.h, подскажите пож) иМне из неё нужно функция FindFirst для нахождения в директории файлов *.txt. http://www.cyberforum.ru/cpp-beginners/thread912337.html
C++ Как получить доступ к кукам браузеров с С++ на Вин 7? (нет, не воровать - защитить)
Как получить доступ к кукам браузеров с помощью C++ на Win 7? Укатывать не собираюсь, пишу шифровщик для обеспечения безопасности куков. Сначала - шифровать. Когда браузеру нужно взять из них данные - дешифровать и ввести непосредственно. Я такое уже реализовывал на XP, но так там нулевая защита :) В принципе осталось только получить к ним доступ и тестировать . Но никак не получается...
C++ Консоль, кубизм, минимализм, как быть? (графика и алгоритмы)
Добрый день. Я пытаюсь придумать решение своей проблемы, но не знаю в какую сторону двигаться. Суть такая: мне нужно нарисовать шахматное поле. При этом, использовать не WFAрр, а обычную консоль. Возник вопрос, как мне нарисовать доску и фигуры так, чтобы картинки можно было перемещать и использовать для алгоритмов? Ну, например. Вот я нарисую пешкоподобную фигурку в закрашенном или...
C++ не найден оператор, как исправить http://www.cyberforum.ru/cpp-beginners/thread912235.html
выдает ошибку 1>4лаба прогр инженерия.cpp(34): error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" (или приемлемое преобразование отсутствует) как исправить, чет не пойму:( #include "stdafx.h" #include <iostream> #include <conio.h> #include <Windows.h> using namespace std; struct student
C++ Нужно исправить ошибки в классе комплексных чисел Мой мозг породил нечто ужасное к ночи, и оно не желает работать. Задание из рода "Бред обыкновенный". Надо исправить ошибки, а голова не варит, как... Это класс комплексных чисел с перегрузками и дружественными функциями. Вот в этом и чепуха. Уже не сплю неделю из-за проблем со средами, сегодня уже накалякал эту чепуху. Разработка ведётся в Eclipse, и он ругается на определённые строки, сейчас... подробнее

Показать сообщение отдельно
ololoshka(
1 / 1 / 0
Регистрация: 17.12.2011
Сообщений: 13
26.06.2013, 14:06  [ТС]     Создать программу, отыскивающую проход по лабиринту
Цитата Сообщение от SatanaXIII Посмотреть сообщение
@ololoshka(, очень хорошая тема. Попробуйте сначала самостоятельно додуматься.
Ну а так вот статья даже с псевдокодами. Ознакомьтесь.
Так же есть так называемое правило случайной руки - для нахождения пути в лабиринте без возможности возврата.

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

Какие у вас мысли по поводу вашей задачи?
Есть сырой код, просто рекурсия с копированием подпутей, выводит все возможные не пересекающиеся пути. Но реализовать код с помощью стека не могу.
C++
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
#include <iostream>
using namespace std;
 
 
int mas[3][3]={
  0,1,1
 ,0,0,0
 ,1,1,0};
 
int X=3, Y=3, x=0, y=0;//X и Y - координаты конца, x и y координаты начала
 
int Make(int x, int y, char s[1000])
{
    char st[1000];
    strcpy(st,s);
    sprintf (st, "%s[%d,%d] -> ", st, x, y);
    if (x==X && y==Y)
         {
        printf("%s\n\n",st);
        return 0;
         }
    
    if (x > 0) 
    if (mas[x - 1][y] == 0) 
          {
          mas[x][y]+=3;              // +=3/-=3 -  запирает/отпирает клетки при итерациях
          Make(x-1, y, st); 
          mas[x][y]-=3;              
          }
    if (x < 9) 
    if (mas[x + 1][y] == 0) 
          {
          mas[x][y]+=3; 
          Make(x+1, y, st); 
          mas[x][y]-=3;
          }
    if (y > 0) 
    if (mas[x][y - 1] == 0) 
          {
                 mas[x][y]+=3;
                 Make(x, y-1, st);
                 mas[x][y]-=3;
          }
    if (y < 9) 
    if (mas[x][y + 1] == 0) 
          {
                 mas[x][y]+=3;
                 Make(x, y+1, st); 
                 mas[x][y]-=3;}
          }
 
int main()
{
    Make(x, y, "");
    system("pause");
    return 0;
}
 
Текущее время: 10:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru