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

Тема в разделе "C/C++/C#", создана пользователем K16FORWARD, 22 сен 2011.

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

    K16FORWARD Гость

    Всем доброго времени суток=)
    Задали курсовой проект, в котором даётся неориентированный граф и нужно найти все пути из точки А в точку Б. Если бы надо было найти только один путь я бы сразу сделал, тем более есть свой алгоритм с флагами для этого дела=)
    В общем в программе дошёл до того что она считывает матрицу смежности из файла и передаёт её в двумерный массив, сделал функцию поиска путей, но она совсем уж криво работает, точнее даж и не работает, укажите плз на ошибки=) Язык С, пишу на Visual Studio 2010.
    Код (C++):
    #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();
    }
     
Загрузка...
Статус темы:
Закрыта.

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