1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Нахождение всех путей в графе

Тема в разделе "Вопросы новичков и не только", создана пользователем K16FORWARD, 22 сен 2011.

Статус темы:
Закрыта.
  1. K16FORWARD

    K16FORWARD Гость

    Репутация:
    0
    Всем доброго времени суток=)
    Задали курсовой проект, в котором даётся неориентированный граф и нужно найти все пути из точки А в точку Б. Если бы надо было найти только один путь я бы сразу сделал, тем более есть свой алгоритм с флагами для этого дела=)
    В общем в программе дошёл до того что она считывает матрицу смежности из файла и передаёт её в двумерный массив, сделал функцию поиска путей, но она совсем уж криво работает, точнее даж и не работает, укажите плз на ошибки=) Язык С, пишу на Visual Studio 2010.
    Код:
    #include "stdafx.h"
    #include "stdio.h"
    #include "conio.h"
    #include "stdlib.h"
    #include "string.h"
    #define TownMax 6
    
    void ReadMatr(int matr[TownMax][TownMax])
    {	int i=0,j=0;
    FILE *fp;
    if((fp=fopen("D:\\matr.txt", "r"))==NULL) 
    {
    printf("File not found\n");
    exit(1);
    }
    for(i = 0; i < TownMax; ++i)
    for(j = 0; j < TownMax; ++j)
    fscanf(fp, "%d", &matr[i][j]);
    fclose(fp);
    }
    
    void GetWays (int begin, int end, int matr[TownMax][TownMax])
    {
    int Visited[TownMax]={0};
    Visited[begin] = 1;
    int Way[TownMax]={0};
    int i,j=0,schet=0;
    
    for (i=1; i<=TownMax;i++)
    {
    if ((matr[begin][i]!=0) && (Visited[i]==0)) 
    {
    Way[TownMax]=i; schet++;
    Visited[i]=1;
    }
    if (Way[1]==begin && Way[schet]==end)
    {	
    for (i=0; i<schet;i++)
    printf("Путь:%d",Way[TownMax]);
    }
    
    }
    }
    
    int main()
    {	int begin,end;
    int matr[TownMax][TownMax]={0};
    puts("Gets begin and end points");
    ReadMatr(matr);
    scanf("%d%d",&begin,&end);
    GetWays (begin,end,matr);
    getch();
    }
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей