Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
DevilRigoll
1 / 1 / 1
Регистрация: 09.04.2014
Сообщений: 68
1

Не работает флойд-уоршалл

18.03.2016, 18:08. Просмотров 795. Ответов 1
Метки нет (Все метки)

Написал алгоритм, проверяю его на матрице смежности :

0 19 2 1 8
0 0 0 5 0
0 3 0 0 0
0 0 0 0 7
0 0 7 0 0

выдает в итоге

0 1 1 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
 int min(int a, int b) {
    return a >= b ? b : a;
}
 
 
void FloydUorshell(int **&Graph, int size) {
    for (int k = 0; k < size; ++k)
    for (int i = 0; i < size; ++i)
    for (int j = 0; j < size; ++j)
        Graph[i][j] = min(Graph[i][j], Graph[i][k] + Graph[k][j]);
}
 
const int N = 5;
 
void fillMas(int **&mas, int size) {
    mas = (int**)malloc(size*sizeof(int*));
    for (int i = 0; i < size; ++i)
        mas[i] = (int*)malloc(size*sizeof(int));
    for (int i = 0; i < size; ++i)
    for (int j = 0; j < size; ++j)
        scanf("%d", &mas[i][j]);
}
 
void showMas(int **mas, int size) {
    for (int i = 0; i < size; ++i){
        for (int j = 0; j < size; ++j)
            printf("%d ", mas[i][j]);
        printf("\n");
    }
}
 
int main(int argc, char* argv[]) {
 
    int **mas = NULL;
    fillMas(mas, N);
    
    FloydUorshell(mas, N);
    showMas(mas, N);
    _getch();
    return 0;
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2016, 18:08
Ответы с готовыми решениями:

Алгоритм Флойд
всем привет) помогите с алгоритмом Флойда пожалуйста(на С). программа поиска кратчайших...

Несколько запусков Дейкстры или всё же Флойд?
Здравствуйте.Хотел бы спросить по поводу решения одной задачи. Есть граф.Надо найти расстояние...


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

Или воспользуйтесь поиском по форуму:
1
Новичок
Модератор
1573 / 1032 / 479
Регистрация: 17.07.2012
Сообщений: 5,208
Завершенные тесты: 3
18.03.2016, 22:24 2
Лучший ответ Сообщение было отмечено DevilRigoll как решение

Решение

Цитата Сообщение от DevilRigoll Посмотреть сообщение
где ошибка?
А разве неправильно программа выводит? У вас в матрице почти везде нули, потому так и вышло.

Добавлено через 1 минуту
P.S Почему бы не юзать STL? Зачем эти указатели и Сишные функции? Память кстати не освобождается.
1
Ответ Создать тему
Опции темы

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