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

Маршруты Гамильтона - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
F1ok
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 6
29.05.2011, 22:03     Маршруты Гамильтона #1
Задание:Написать программу, реализующую алгоритм метода перестановки по маршрутам для преобразования исходного сообщения.

У самого не выходит. Нашёл в нете код, но он не работает, может кто помочь подкорректировать его? И если вдруг у кого есть ссылки на рабочий, был бы очень благодарен

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
int[] dop, x;  //dop[v] - метка включения в маршрут, x[n] - последовательность вершин образующих маршрут
        int v0;        //произвольная вершина графа, которая послужит началом маршрута
 
        private void gamiltCycle()
        {
            dop = new int[n];
            x = new int[n];
            initGraph();
            textBox4.Clear();
 
            for (int i = 0; i < n; i++) dop[i] = 1;  //все вершины не включены в маршрут
 
            v0 = Convert.ToInt32(textBox5.Text) - 1; //произвольная вершина графа, которая послужит началом маршрута
 
            if (v0 < 0 || v0 >= n)
                return;
 
            x[0] = v0;
            dop[v0] = 0;
            gamilt(1);
        }//gamiltCycle()
 
        private void gamilt(int k)
        {
            for (int y = 0; y < n; y++)             //идем по смежным вершинам
            {
                if (graph[x[k - 1], y] != 0)
                {
                    if ((k==n)&&(y == v0))          
                    {
                        for (int j = 0; j < x.Length; j++)
                        {
                            textBox4.Text += "v" + (x[j]+1) + ", ";
                        }
                        textBox4.Text += "v" + (v0+1) + "\r\n";
                    }
                    else                           //если текущая вершина y не замыкает маршрут до цикла Гамильтона
                    {
                        if (dop[y] == 1)           //если y не включена в маршрут
                        {
                            x[k] = y;
                            dop[y] = 0;            //включаем y в маршрут
                            gamilt(k + 1);
                            dop[y] = 1;
                        }
                    }
                }//if
 
            }//for
 
        }//gamilt()
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2011, 22:03     Маршруты Гамильтона
Посмотрите здесь:

Prolog Найти вершины которые образуют цикл Гамильтона
Статические маршруты Cisco
Составить функцию Гамильтона и уравнения
C++ Для заданной вершины p найти маршруты в другие города, хотя бы один маршрут для каждого города
Шифр гронсфельда + маршрут Гамильтона C++
Debug assertion failed в коде шифра Гамильтона C++
Маршруты Гамильтона Matlab
Java Шифрование 2 маршрутами Гамильтона

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mute
 Аватар для mute
17 / 17 / 5
Регистрация: 26.11.2012
Сообщений: 162
Записей в блоге: 2
05.06.2013, 16:29     Маршруты Гамильтона #2
Переведите на паскаль плиииззз!
Yandex
Объявления
05.06.2013, 16:29     Маршруты Гамильтона
Ответ Создать тему
Опции темы

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