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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kipetilnik
1 / 1 / 0
Регистрация: 25.10.2012
Сообщений: 20
#1

Реализация алгоритма Прима: "-" в создании динамического массива - C++

20.12.2012, 21:19. Просмотров 745. Ответов 0
Метки нет (Все метки)

Требуется реализовать алгоритм Прима для построения минимального остовного дерева.
Для статического массива алгоритм работает, а вот при создании динамического выходит ошибка.
Компиляцию проходит.
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
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<conio.h>
using namespace std;
int a,b,u,v,n,i,j,ne=1;
int visited[10]={0},_min,_mincost=0/*cost[10][10]*/;
void main()
{
    //clrscr();
    setlocale(LC_ALL, "Russian");
    printf("\n Введите кол-во вершин :");
    scanf("%d",&n);
    //printf("\n Введите элементы матрицы :\n");
    //СОЗДАНИЕ МАССИВА n*n и заполнение его случайными значениями от 0..11              
    int **cost = new int* [n]; // Создаем массив указателей                             
    for (int i = 0; i < n; i++)                                                         
    {                                                                                   
        cost[i] = new int [n]; // Создаем элементы                                      
    }                                                                   
    // Заполнение массва и зануление главной диагонали                                  
    for(int i=0;i<n;i++)                                                                
        for(int j=0;j<n;j++)                                                            
        {                                                                               
            if (i==j) cost[i][j]=0; else cost[i][j]=0+rand()%11;
            if(cost[i][j]==0)
                cost[i][j]=999;
        }
        visited[1]=1;
        printf("\n");
        while(ne<n)
        {
            for(i=1,_min=999;i<=n;i++)
                for(j=1;j<=n;j++)
                    if(cost[i][j]<_min)
                        if(visited[i]!=0)
                        {
                            _min=cost[i][j];
                            a=u=i;
                            b=v=j;
                        }
                        if(visited[u]==0 || visited[v]==0)
                        {
                            printf("\n Ребро %d:(%d %d) вес:%d",ne++,a,b,_min);
                            _mincost+=_min;
                            visited[b]=1;
                        }
                        cost[a][b]=cost[b][a]=999;
        }
        printf("\n Вес минимального остовного дерева=%d",_mincost);
        getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 21:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация алгоритма Прима: "-" в создании динамического массива (C++):

Реализация алгоритма Прима - C++
Алгоритм Прима?кто может написать?

"Очередь" на основе динамического массива - C++
Как можно переделать чтобы не было ошибки &quot;Предел памяти&quot;? Задача: реализация &quot;очередь&quot; на основе динамического массива. #include...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Ошибка при создании шаблонной функции:"error C2075: temp: для инициализации массива требуются фигурные скобки" - C++
template &lt;typename T&gt; int GnomeSort(T* p, int length) { int i, count; i = 0; count = 0; while(i &lt; length) { if(i...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Объяснить что такое "раздельная компиляция", что такое "интерфейс класса" и "реализация класса" на примере - C++
Есть класс, содержащий объекты и конструктор. Конструктор объявляется в одном из cpp файлов(их несколько). Можно ли, как-то, использовать...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 21:19
Привет! Вот еще темы с ответами:

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru