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

Нахождение кратчайшего пути от одной вершины графа до другой - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Рекурсия: получить число, цифры в котором будут расположены в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread38798.html
Нужно получить с помощью рекурсивной функции число, символы в котором будут расположены в обратном порядке. Например 123 получим 321. Вот что у меня получилось: #include <iostream> #include <vector> using namespace std; vector <int> rec2(vector<int> &vec1, char *chislo1, int &b) { b=sizeof(chislo1); if (b==0) { return vec1;
C++ Описать функцию, которая изменяет заданную строку следующим образом задача:Описать функцию, которая изменяет заданную строку следующим образом: сначала записывает все элементы с четными индексами, а затем все элементы с нечетными индексами ( с сохранением их относительного порядка в каждой группе). Например, abcdefgh => acegbdfh, vwxyz => vxzwy. компилятор:borland c++ вот ошибки: #include <iostream> using namespace std;//компилятор пишет declaration syntax... http://www.cyberforum.ru/cpp-beginners/thread38778.html
Объясните принцип действия алгоритма!!! C++
Это задача о сумме подмножеств, нужно найти элементы массива сумма которых равно нулю{14,-7,-10,4,3, 5, -19, -12, 9, 6}; #include "stdafx.h" #include <math.h> #define N 10 int summ(int l, int *a) { int S=0, k;//к-номер варианта, сдвинутый на j позиций вправо, s– сумма необходимых элементов от 0 до j for(int j=0;j<N;j++) { k=l%2;//получить младший бит числа
C++ Постраничный вывод текста
У меня есть функция вывода содержимого файла на экран. И задаётся максимальное количество строк на одну страницу 21. И если у меня на последней странице должно остаться меньше чем 21 строчка, то мне дополняет строками предыдущей страницы и в суме 21 получается! Что мне нужно изменить или дописать? Вот моя функция! #define PAGESIZE 21 int txt2() { char s; int i, count,n=0,str =...
C++ Заменить прописные буквы строчными http://www.cyberforum.ru/cpp-beginners/thread38742.html
у меня есть прога заменяющая определенные символы(.и пробел) из одного текстового файла в другой. Нужно ее переделать так чтобы прописные буквы заменялись на строчные вот прога: #include<stdio.h>; #include<conio.h>; #include<string.h>; #include<iostream.h>; main(){ clrscr(); FILE *f1,*f2;
C++ Продолжаем спасать мир))) Помогите плз) чтобы получить итоговую нужно сдать 3 проги по С++. Сделать их сам не могу( не было на этих темах, парился в военкомате, по поводу отсрочки, будь она не ладна( Спасайте) Осталось 2 дня, чем быстрее будет решение, тем лучше, хоть как-то разберусь с прогами мб. 2) Дана целочисленная прямоугольная матрица. Найти сумму модулей элементов, расположенных выше главной диагонали(оформить... подробнее

Показать сообщение отдельно
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.06.2009, 18:35     Нахождение кратчайшего пути от одной вершины графа до другой
ну у вас неконкретно поставлена задача... вам необходим кратчайший путь:
по стоимости или по кол-ву посещенных вершин...

Алгоритм Дейкстры: по стоимости..
Я писал его недавно на лабу.. он
тут

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
75
76
77
78
79
80
#include <iostream>
using namespace std;
 
#define N 100000
//---------------------------------------------------------------------------
bool Exist(int *V, int n, int x);
void Dejkstra(int **G, int n);
//---------------------------------------------------------------------------
int main()
{
   const int n=6;
   int G[n][n] = 
   {
       N,   7,   9,   N,   N,  14,
       7,   N,  10,  15,   N,   N,
       9,  10,   N,  11,   N,   2,
       N,  15,  11,   N,   6,   N,
       N,   N,   N,   6,   N,   9,
      14,   N,   2,   N,   9,   N
   };
   int **M = new int*[n];
   for (int i=0; i<n; i++) M[i] = G[i];
 
   Dejkstra(M, n);
 
   system("pause");
   return 0;
}
//---------------------------------------------------------------------------
bool Exist(int *V, int n, int x)
{
   for (int j=0; j<n; j++)
      if (V[j] == x) return true;
   return false;
}
//---------------------------------------------------------------------------
void Dejkstra(int **G, int n)
{
   int s;
   int *V = new int[n];
 
   for (int i=0; i<n; i++) V[i] = -1;
 
   cout << "Please, enter top of entry -> ";
   cin >> s;
 
   G[s][s] = 0;
 
   for (int j=0; j<n; j++)
   {
      int min;
      bool first = true;
      V[j] = s;
 
      for (int i=0; i<n; i++)
      {   
         if (G[s][i]!=-1 && Exist(V,n,i)==false)
         {
            if (first == true) { min = i; first = false; } 
            if (G[s][min]>G[s][i] && j!=n-1) min = i;
            if ((G[s][s]+G[s][i]) < G[i][i]) G[i][i] = G[s][s]+G[s][i];
         }
      }
 
      if (j!=n-1) 
         s = min;
   }
 
    cout << "\nRoad = ";
    for (int i=0; i<n; i++)
       cout << V[i] << " ";
    cout << "\n\n";
 
    for (int i=0; i<n; i++)
       cout << "from top " << V[0] << " to " << i << " = " << G[i][i] << endl;
    cout << endl;
 
    delete[] V;
}
//---------------------------------------------------------------------------
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru