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

Решение задачи коммивояжёра при помощи перебора - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Borland c++ 5.02 http://www.cyberforum.ru/cpp-beginners/thread76327.html
Тут получается 9 задач за каждую могу заплатить по 100 рублей.Кого заинтересовало Мой Icq 428850079. Сначала пишем в аську. Там разберемся... 1.Для матрицы размером NxM вывести положение всех ее седловых точек. Элемент матрицы называется седловой точкой, если его значение является минимальным в строке, но максимальным в столбце. 2.Написать программу, которая в данной последовательности целых...
C++ Блок-схема Да и ни как не могу понять вроде всё работает: программа считает сумму после нуля; но когда ноль не вводишь в массив, то она считает не правильно(не знаю, что и делать). И Составьте пожалуйста блок-схему (заранее огромное спс): Условие задачи: В одномерном массиве, состоящем из n целых элементов, вычислить: количество положительных элементов массива; сумму элементов массива, расположенных... http://www.cyberforum.ru/cpp-beginners/thread76309.html
C++ Перестановка строк без цикла
дана произвольная матрица, записанная в файле, необходимо поменять местами две любые строчки этой матрицы, не используя цикл.
C++ Найти двузначные числа
Найти двузначные числа для которых существуют трехзначные такие,что все их круговые перестановки цифр делятся на это двузначное число (наприм. для 864 число 48,для 486 - 27,648 - 36) (в С++)
C++ слова http://www.cyberforum.ru/cpp-beginners/thread76238.html
Ребята помогите решить задачу(срочно) В строке посчитать сколько слов начинаются с большой буквы. (если можно на максимально простом языке)
C++ Найти и заменить в тексте все предлоги на "!" Задание: набрать текст в текстовом редакторе(5-10 строк по 40-60 символов); считать этот текст в программу; найти и заменить в тексте все предлоги на ! (кол-во восклицательных знаком должно быть равно числу символов в предлоге); Результаты работы программы записать в текстовый файл (я так понял другой) и вывести на экран. Ну считать текст из файла и запихнуть обработанный обратно мы еще не... подробнее

Показать сообщение отдельно
Kemsit
 Аватар для Kemsit
4 / 4 / 1
Регистрация: 07.06.2009
Сообщений: 62
09.01.2010, 00:41  [ТС]     Решение задачи коммивояжёра при помощи перебора
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
    #include <iostream>
    using namespace std;
    //Матрица смежности
    void prnt(int n, int *path)
    {
        int p;
        for ( p = 0 ; p<n ; p++)
        printf("%d ", path[p] ) ;
        printf("%d ", path[0] ) ;
        printf("\n") ;
    }
    //подпрограмма нахождения гамильтонова цикла
    int gamilton ( int k, int n, int *path, int v0, int *c)
    {
        int v,q1=0;
        for (int i=0; i<n; i++)
        {
            for (int j=0; j<n; j++)
            {
                cout<<"Введите элемент ["<<i<<"]["<<j<<"] -> ";
                cin>>a[i][j];
            }
        }
        for(v=0; v<n && !q1; v++)
        {
            if(a[v][path[k-1]]||a[path[k-1]][v])
            {
                if (k==n && v==v0 ) q1=1;
                else if (c[v]==-1)
                {
                    c[v] = k ; path[k]=v;
                    q1=gamilton (k+1, n,a,path,v0,c) ;
                    if (!q1) c[v]=-1;
                } else continue;
            }
        } return q1;
    }
    int main()
    {
        setlocale (LC_ALL, "Russian");
        int j, n;
        int c[256] ; // номер хода, на котором посещается вершина
        int path[256]; // номера посещаемых вершин
        int v0=2; // начальная вершина
        int a[256][256];
        cout<<"Введите размерность матрицы"<<endl;
        cin>>n;
        printf("Гамильтонов цикл:\n");
        for(j=0;j<n;j++) c[j]=-1;
        path[0]=v0 ;
        c[v0]=v0;
        if(gamilton (1, n, a, path, v0, c)) prnt(n, path); else printf("Нет решений\n");
        system ("pause");
    }
Вот. ток тут небольшая ошибка с передачей в функцию. Пока выложил - как исправлю - выложу рабочий вариант... Посмотрите.

Добавлено через 1 час 0 минут
Ни у кого мыслей нет?((
 
Текущее время: 17:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru