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

Алгоритм поиска в глубину - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h http://www.cyberforum.ru/cpp-beginners/thread591959.html
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. 2.Определить функцию, проверяющую, является ли данное число простым, и функцию, подсчитывающую количество единиц в двоичной записи натурального числа. Найти все пары простых чисел, не превосходящих n, сумма единиц в двоичной записи которых совпадает. Например, такой...
C++ Дана строка S. Создать новую строку, состоящую из символов S, распо- ложенных в обратном порядке. Разработать функции, которые реализуют алгоритмы задач из занятия 1. Исходные данные для вычислений должны передаваться через список пара- метров, а результат – через имя функции. (задание № 1)-----> Дана строка S. Создать новую строку, состоящую из символов S, распо- ложенных в обратном порядке. http://www.cyberforum.ru/cpp-beginners/thread591958.html
Создать новую строку, состоящую из символов исходной, расположенных в обратном порядке C++
1 Дана строка S. Создать новую строку, состоящую из символов S, распо- ложенных в обратном порядке. 2 При условии задачи 23 выяснить, имеется ли пассажир, багаж которого превышает багаж каждого из остальных пассажиров и по числу вещей, и по весу. (не понятно что именно является задачей 23... но вроде это она... правда там тоже написано при условии задачи 23... но она именно под 23...
C++ Проверить, можно ли получить вторую матрицу из первой применением конечного числа
Для двух заданных матриц A(n, n) и B(n, n) проверить, можно ли получить вторую из первой применением конечного числа (не более четырех) операций транспонирования относительно главной и побочной диагоналей. (PascalABC)
C++ Проверить для матрицы H=E-vvT/|v|2 (где E – единичная матрица, а вектор v=v(n) свойство ортогональности HT=H-1 http://www.cyberforum.ru/cpp-beginners/thread591926.html
Проверить для матрицы H=E-vvT/|v|2 (где E – единичная матрица, а вектор v=v(n)) свойство ортогональности HT=H-1 помогите пожалуйста
C++ Определить фамилию женщины, имеющей самую маленькую зарплату Всем привет проверьте пожалуйста в чем ошибка????? Известны данные о 10 сотрудниках фирмы (фамилия, зарплата и пол). Определить фамилию женщины, имеющей самую маленькую зарплату. #include <iostream> #include <stdlib.h> #include <time.h> #include <math.h> using namespace std; подробнее

Показать сообщение отдельно
MrGluck
Модератор
Эксперт CЭксперт С++
6991 / 4162 / 594
Регистрация: 29.11.2010
Сообщений: 11,040
30.05.2012, 23:27     Алгоритм поиска в глубину
Вот, делал когда то:
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
74
#include <fstream>
#include <stack>
#include <vector>
#include <iostream>
#include <clocale>
#define N 10
using namespace std;
 
void designing(int* , int, int, ofstream&); // ГЄГ®Г*ñòðóèðîâГ*Г*ГЁГҐ Г¬Г*ðøðóòГ*
 
int main()
{
    setlocale(LC_ALL, "Russian");
    ofstream o("result.txt");
    ifstream in("A.txt");
    if (!in) return 1;
    // ------------------------------ГЁГ*èöèГ*ëèçГ*öèÿ------------------------------
    stack <int> st; // Г±ГІГҐГЄ äëÿ õðГ*Г*ГҐГ*ГЁГї Г*îìåðîâ âåðøèГ*
    bool visited[N]; //false - âåðøèГ*Г* Г*ГҐ Г°Г*ññìîòðåГ*Г*, true - Г°Г*ññìîòðåГ*Г*
    bool instack[N]; //false - âåðøèГ*Г* Г*ГҐ Гў Г±ГІГҐГЄГҐ, true - Гў Г±ГІГҐГЄГҐ
    bool DUG[N][N]; // Г¬Г*òðèöГ* ñìåæГ*îñòè
    int start, end; // Г*îìåð Г±ГІГ*ðòîâîé ГЁ ГЄГ®Г*ГҐГ·Г*îé âåðøèГ*
    int rang[N]; // äëèГ*Г* ГЇГіГІГЁ
    int VON_PUNKT[N]; // Г*îìåð âåðøèГ*Г», ГЁГ§ êîòîðîé ïîïГ*ëè Гў ГІГҐГЄГіГ№ГіГѕ
    cout<< "Ââåäèòå Г*Г*Г·Г*ëüГ*ГіГѕ âåðøèГ*Гі: ";
    do{ cin>> start;} while (start < 0 || start > 9);
    cout<< "Ââåäèòå ГЄГ®Г*ГҐГ·Г*ГіГѕ âåðøèГ*Гі: ";
    do{ cin>> end;} while (end < 0 || end > 9 || end == start);
    for (int i = 0; i < N; i++)
    {
        VON_PUNKT[i] = start;
        rang[i] = 999;
        visited[i] = instack[i] = false;
        for (int j = 0; j < N; j++)
            in>> DUG[i][j];
    }
    // Г§Г*ïèñûâГ*ГҐГ¬ Г*Г*Г·Г*ëüГ*ГіГѕ âåðøèГ*Гі Гў î÷åðåäü
    st.push (start);
    visited[start] = instack[start] = true;
    VON_PUNKT[start] = -1;
    rang[start] = 0;
    // --------------------------------îáùèé ГёГ*ГЈ--------------------------------
    while (!st.empty())
    {
          int besuch = st.top();
          visited[besuch] = true;
          st.pop();
          for (int i = 0; i < N; i++)
          {
              if (!instack[i] && DUG[besuch][i])
              {
                  st.push (i);
                  instack[i] = true;
                  rang[i] = rang[besuch] + 1;
                  VON_PUNKT[i] = besuch;
              }
          }
    }
    // --------------------------Г§Г*ГЇГЁГ±Гј ГЇГіГІГЁ Гў ГґГ*éë ----------------------------
    designing(VON_PUNKT, rang[end], end, o);
    in.close();  o.close();
    return 0;
}
 
void designing(int *p, int rang, int end, ofstream &o)
{
    vector <int> v;
    vector <int>::iterator cur;    
    for (int i = end; i != -1; i = p[i])
        v.push_back(i);
    o<< "Êîëè÷åñòâî ïåðåõîäîâ: "<< rang<< endl;
    for (cur = v.end() - 1; cur >= v.begin(); cur--)
        o<< *cur<< " ";
}
Объяснение (офорлено в виде лабы)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru