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

Считывать матрицу смежности и количество вершин из входного файла и выводить гамильтоновы циклы - C++

Восстановить пароль Регистрация
 
nikalerka
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 77
24.11.2010, 19:21     Считывать матрицу смежности и количество вершин из входного файла и выводить гамильтоновы циклы #1
Доброго времени суток!
Программа должна считывать матрицу смежности и количество вершин из входного файла и выводить гамильтоновы циклы в выходной. Программа запускается, но в выходной файл ничего не выводится. Я не могу понять в чем дело.
Помогите, пожалуйста!

#include<iostream.h>
#include <stdio.h>
typedef enum {false, true} bool;
FILE* fi=fopen("g_graph.txt","r");
FILE* fo=fopen("g_cycle.txt","w");
bool**graph;//Матрица смежности для хранения графа
int n;//Количество вершин в графе
const int vertex=1;//первая вершина при поиске
int *St;//Массив для хранения просмотренных вершин
int *Nnew;//Массив признаков: вершина просмотрена или нет
void out_way(int n)//Процедуры вывода Гамильтонова цикла
{
for(int i=0;i<n;i++)
fprintf(fo,"%d", St[i]);
fprintf(fo,"%dn",vertex);
}
void gamilton_path(int k)
{
int v=St[k-1];// текущая вершина
for(int j=0;j<n;j++)
if(graph[v][j]==1)//есть ребро между v и j
if(k==n && j==vertex)
out_way(n);//прошли все вершины
else
if(Nnew[j])//вершина не просмотрена
{
St[k]=j;//добавляем ее к пройденому пути
Nnew[j]=false;//просмотрена
gamilton_path(k+1);//строим путь дальше
Nnew[j]=true;//возвращаемся назад и строим другие циклы
}
}
int main()
{
fscanf(fi,"%d",&n);//считываем количество вершин
St=new int[n];
Nnew= new int[n];
for(int i=0;i<n;i++)
Nnew[i]=1;//нет просмотренных вершин
graph=new bool*[n];
for(int i=0;i<n;i++)
graph[i]=new bool[n];//выделяем память под строку
for(int j=0;j<n;j++)
{
fscanf(fi,"%d",&graph[i][j]);
}

Nnew[vertex]=false;//первая вершина уже просмотрена
St[0]=vertex;//вершина с которой начали проход
gamilton_path(1);//параметр означает количество пройденых вершин
fcloseall();
return(0);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 19:21     Считывать матрицу смежности и количество вершин из входного файла и выводить гамильтоновы циклы
Посмотрите здесь:

Программа должна считывать английский текст и выводить на экран слова, которые начинаются на гласные буквы C++
Как из матрицы смежности получить матрицу инцидентности? C++
C++ Программа, которая копирует содержимое входного файла в выходной; подсчитывает количество слов в тексте...
C++ список смежности в матрицу смежности
C++ Сгенерировать матрицу смежности полного графа
C++ Написать программу, которая выводит матрицу смежности графа с определенным количеством вершин и ребер
C++ Граф в виде матрицы смежности и количества вершин
Ориентированный граф. Получить из списка рёбер матрицу смежности C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru