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

Прохождение лабиринта - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Массивы.Из массива удалить последний из нечетных элементов http://www.cyberforum.ru/cpp-beginners/thread754253.html
программа запускается,но не хочет корректно работать,помогите пожалуйста #include "stdafx.h" #include "locale.h" void vod(int*a,int b) { int i; printf("Введите массив A\n",b);
C++ Редактирования двоичного файла С++ Ребят, вот такая задача... Пишу курсовую работу и столкнулся с такой вот проблемой... Рассажу подробно =)) У меня есть двоичный файл, откуда я считываю информацию, а именно: названия поезда и колличество свободных мест. Стрелками на клавиатуре я выбираю нужное мне поле и выбираю это поле, и из этого поля я должен отредактировать колличество свободных мест (увеличить, или уменьшить...) как... http://www.cyberforum.ru/cpp-beginners/thread754247.html
Сортировка "расческой" C++
ребят,помогите пожалуйста с сортировкой расческой. нужен пример алгоритма и блок-схема. на гугл не отправляйте:)Избегайте "кричащего" выделения текста
C++ Как выводить русский текст?
помогите кто нибудь с выводом русского текста в этой программе пытался воспользоваться решениями с форума, но видимо я конченый дегенерат так и не смог ничего сделать. //простая программа ведения базы данных служащих. #include <iostream> #include <cstdlib> using namespace std; char name ; //массив имен служащих. char pfone ; //массив телефонов служащих float hours ; //массив часов...
C++ Странные типы http://www.cyberforum.ru/cpp-beginners/thread754192.html
Всем добрый день. Хотелось бы узнать ответы на 2 вопроса: 1. Шаблонный тип - тип использующийся как шаблон для нескольких типов, а шаблоны типа - несколько шаблонных типов использующихся одним типом? 2. Зачем два одинаковых типа int и long? Или я что-то не так понял? http://msdn.microsoft.com/en-us/library/s3f49ktz(v=vs.80).aspx Буду благодарен за ответы.
C++ Поиск последовательности элементов максимальной длины в массиве Помогите пожалуйста написать программу, вот условия программы...Даны два массива. Напишите программу, которая находит такую последовательность элементов максимальной длины, которая содержится и в первом, и во втором массивах. подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
06.01.2013, 22:11     Прохождение лабиринта
В общем код не мой, писал один мой знакомый, который только осваивает С++ и часто обращается ко мне за советом. И вот как раз сегодня он мне скинул код для этой задачи, я тут только читабельность добавил и немного подсказал как сократить код
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
const int M = 5, N = 5;
enum {Down, Right, Nothing};
 
bool isdown(int, int,  int[][N]);
bool isright(int, int,  int[][N]);
bool SearchPath(int, int,  int[][N], char*);
 
int main()
{
    int Maze[M][N] = {
                        {0, 0, 0, 1, 0},
                        {1, 1, 0, 1, 1},
                        {1, 0, 0, 0, 0},
                        {0, 0, 0, 1, 1},
                        {1, 0, 0, 0, 0}
                     };
    char P[M + N];
    memset((void*)P, Nothing, N + M);
 
    const char *path[] = {"Down", "Right"};
 
    if (SearchPath(0, 0, Maze, P)) {
        for(int i = 0; i < M + N && P[i] < Nothing; i++) {
            cout << path[P[i]] << '\t';
        }
    } else {
        cout << "Impossible.";
    }
 
    return 0;
}
 
bool SearchPath(int i, int j, int Maze[][N], char *P)
{
     if (i == M - 1 || j == N - 1) {
         return true;
     }
 
     bool hasStep = false;
 
     if (isright(i, j, Maze)) {
        hasStep = SearchPath(i, j + 1, Maze, P);
        if(hasStep) {
            P[i+j] = Right;
        }
 
        return hasStep;
     }
 
     if (!hasStep && isdown(i, j, Maze)) {
        hasStep = SearchPath(i + 1, j, Maze, P);
        if (hasStep) {
            P[i + j] = Down;
        }
 
        return hasStep;
     }
}
 
bool isdown(int i, int j, int Maze[][N])
{
    return Maze[i + 1][j] == 0;
}
 
bool isright(int i, int j, int Maze[][N])
{
    return Maze[i][j + 1] == 0;
}
P.S. алгоритм называет "перебор с возвратом" (backtracking)
 
Текущее время: 21:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru