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

Найти все пути между двумя любыми вершинами в графе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Мультисписок студентов http://www.cyberforum.ru/cpp-beginners/thread891053.html
У меня задание мультисписок студентов. Как его организовать? Подскажите пожалуйста
C++ C++ vs ogl Здравствуйте. Не могу найти нужной мне инфы - мало времени; преподаватель с++ как валянок. Ничего не объясняет, а задания задает. Суть в следующем: Средствами с++ и ogl изобразить перемещение точки (дугой) из квадрата на оси Х в другой квадрат на той же оси. Времени самому с нуля учить уже нет, а сдавать нужно. Откликнитесь! http://www.cyberforum.ru/cpp-beginners/thread891048.html
Вычислить рекурсивным методом значение математической зависимости C++
Помогите, пожалуйста, нужно "Вычислить рекурсивным методом значение математической зависимости:"
C++ СРОЧНО! Розработка автоматизованой системы товарообороту
Розробка автоматизованої системи товарообороту і обробки платежів в магазині.. Нужно мне создать программу пишите в комментарии идеи или если есть какие-то исходник то сбросьте .. очень срочно мне нужно .. буду очень благодарен
C++ Помощь в задаче с заменой http://www.cyberforum.ru/cpp-beginners/thread891014.html
#include <iostream.h> #include <string.h> #include <conio.h> int main() { char stroka; int len; cin>>stroka; len=strlen(stroka); for(int i=0;i<len;i++)
C++ Разработать класс "Строка" разработать класс строка. предусмотреть методы сложения и сравнения строк, поиск по шаблону в строке. каждая строка длинной не более 80 символов. слова в строке разделены пробелами. подробнее

Показать сообщение отдельно
dragon_ice
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 3
04.06.2013, 19:47  [ТС]     Найти все пути между двумя любыми вершинами в графе
Код в архиве:
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include <iomanip>
using namespace std;
int **graph; //матрица смежности
int *ways; // путь
bool *include; //включена ли точка в путь
int s, f, iskomaya, i, j, N, start, finish; // s - точка, из которой делается шаг, f - конечная точка, iskomaya - номер и скомой точки маршрута, N - количество вершин в графе, start и finish -начальная и конечная точки
void poisk(int s,  int f, int iskomaya);
void main(){
    setlocale(LC_ALL, "Russian");
    cout<< "Введите количество элементов массива N="; cin>>N; cout<< endl;
    graph=new int *[N];
    for(int i=0; i<N; i++)
        graph[i]=new int [N];
    cout<< "Введите элементы массива: 1-если вершины смежны, 0 - если вершины не смежны"; cout<< endl;
    for(i=0; i<N; i++)
        for(j=0; j<N; j++) cin>> graph[i][j];
    for(i=0; i<N; i++){
        for(j=0; j<N; j++) cout<< setw(4) << graph[i][j] << " "; cout<< endl;
    }
 
    ways=new int[N];
    for(i=0; i<N; i++){
        ways[i]=0;
    }
    include=new bool [(bool)N];
    for(i=0; i<N; i++){
        include[i]=0;
    }
    cout<<"Введите первую вершину поиска(от которой будем искать)"; cin>>start; cout<< endl;
    if(start==N || start>N){
        cout<<"Введите первую вершину поиска(от которой будем искать)"; 
        cin>>start;
    }
    
    cout<<"Введите вторую вершину поиска(путь до которой нужно найти)"; cin>>finish; cout<< endl;
    if(finish==0 || finish>N){
        cout<<"Введите вторую вершину поиска(путь до которой нужно найти)";  
        cin>>finish;
    }
    ways[0]=start;
    include[start]=true;
    poisk(start, finish, 1);
 
 
 
}
 
void poisk(int s,  int f, int iskomaya){
    int tek; // точка, в которую делается шаг
    if(s==f){
        for(i=0; i<iskomaya; i++){
            cout<<ways[i]<<" "; 
            //cout<<endl;
        }
    }
    else
        for(tek=0; tek<N; tek++){
            if((graph[s][tek]==1 || graph[tek][s]==1)&&(!include[tek])){
                ways[iskomaya]=tek;
                include[tek]=true;
                poisk(tek, f, iskomaya+2);
                include[tek]=false;
                ways[iskomaya]=0;
            }
        }
        //cout<<ways[i]<<" "; cout<<endl;
 
}
 
Текущее время: 02:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru