С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 20.04.2022
Сообщений: 8
1

Заполнить матрицу случайными значениями и найти путь с наименьшим весом из ячейки

09.05.2022, 00:50. Показов 861. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Матрицу M размера m × n (3 ≤ m, n ≤ 100) заполните случайными
целыми числами со значениями в интервале [а..b]. Найдите и выдайте путь с
наименьшим весом из ячейки [m-1, 0] в ячейку [0, n-1], переходя из ячейки в
ячейку только вправо и вверх. Матрицу М создавайте динамически.

Помогите пожалуйста и если можно то с комментариями.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2022, 00:50
Ответы с готовыми решениями:

Квадратную матрицу заполнить случайными числами со значениями в интервале
Квадратную матрицу M размера n × n (3 ≤ n ≤ 10000) заполнить случайными вещественными числами со...

Динамическую квадратную матрицу заполнить случайными значениями в диапазоне (-20; 20)
Динамическую квадратную матрицу заполнить случайными значениями в диапазоне (-20; 20). В матрице...

Определить матрицу (двумерный массив) и ее заполнить случайными значениями
Определить матрицу (двумерный массив) и ее заполнить случайными значениями, значение элемента...

Квадратную матрицу заполнить случайными числами со значениями в интервале
Квадратную матрицу M размера n × n (3 ≤ n ≤ 10000) заполнить случайными вещественными числами со...

2
2859 / 2006 / 988
Регистрация: 21.12.2010
Сообщений: 3,711
Записей в блоге: 10
09.05.2022, 08:42 2
Лучший ответ Сообщение было отмечено L33TCoder как решение

Решение

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <vector>
#include <utility>
#include <climits>
#include <algorithm>
#include <iomanip>
#include <queue>
#include <cstdlib>
#include <ctime>
#include <random>
#include <functional>
 
int main()
{
    system("chcp 1251 > 0");
    int const m = 4, n = 4, a = 1, b = 9;
    std::vector<std::vector<int>> mtx(m, std::vector<int>(n));
    std::mt19937 eng{(unsigned)time(nullptr)};
    std::uniform_int_distribution uid{a, b};
    for (auto& v : mtx)
    {
        std::generate_n(v.begin(), n, std::bind(uid, std::ref(eng)));
        for (auto val : v)
        {
            std::cout << val << " ";
        }
        std::cout << "\n";
    }
 
    // алгоритм Дейкстры
    std::vector<std::vector<bool>> vb(mtx.size(), std::vector(mtx[0].size(), false));
    std::vector<std::vector<int>> vp(mtx.size(), std::vector(mtx[0].size(), INT_MAX));
    auto comp = [&vp](auto const& pa, auto const& pb) {return vp[pa.first][pa.second] > vp[pb.first][pb.second]; };
    std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int>>, decltype(comp)> pq{ comp };
    int i{ m-1 }, j{};
    vp[i][j] = mtx[i][j];
    pq.emplace(i, j);
    while (!pq.empty())
    {
        i = pq.top().first;
        j = pq.top().second;
        pq.pop();
        if (vb[i][j] == false)
        {
            if (i > 0)
            {
                vp[i - 1][j] = std::min(vp[i - 1][j], vp[i][j] + mtx[i - 1][j]);
                pq.emplace(i - 1, j);
            }
            if (j < mtx[i].size() - 1)
            {
                vp[i][j + 1] = std::min(vp[i][j + 1], vp[i][j] + mtx[i][j + 1]);
                pq.emplace(i, j + 1);
            }
            vb[i][j] = true;
        }
    }
    std::cout << "Матрица минимальных путей: " << "\n";
    for (auto v : vp)
    {
        for (auto val : v)
        {
            std::cout << std::setw(4) << std::left << val;
        }
        std::cout << "\n";
    }
    std::cout << "\nМинимальный путь: " << vp.front().back() << "\n";
}
0
0 / 0 / 0
Регистрация: 20.04.2022
Сообщений: 8
09.05.2022, 13:31  [ТС] 3
В 19 строке подчеркивает красным с ошибкой(use of class template 'uniform_int_distribution' requires template arguments
ccls)

И в 31-32 строке подчеркивает красным слово Vector(use of class template 'uniform_int_distribution' requires template arguments
ccls)
0
09.05.2022, 13:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2022, 13:31
Помогаю со студенческими работами здесь

Заполнить матрицу (4х4) случайными значениями от 12 до 18 включительно. Вывести сумму значений элементов каждого столбца матрицы
Пожалуйста исправьте ошибки: 1.Задать двумерный массив (4х4) случайными значениями от 12 до 18...

Заполнить матрицу B5:F15 случайными числами, вывести элементы матрицы в строку, начиная с ячейки А1
Доброго времени суток. Никак не могу решить задачу в Visual basic. Выдет, что решение невозможно и...

Заполнить массив случайными значениями и найти максимальное
Содать 10 элементный массив и присвоить каждому элементу значение при помоши рендом и выяснить у...

Заполнить массив w(7) случайными значениями, найти произведение четных элементов
Сдаю экзамен по информатике,буду очень благодарен :) Дан массив w(7).Заполнить массив w(7)...

Заполнить массив h(6) случайными значениями. Найти сумму элементов массива с четными индексами
(Дан массив h(6) . Заполнить массив h(6) случайными значениями. Найти сумму элементов массива...

Заполнить матрицу 3х3 случайными числами и найти ранг матрицы
помогите пожалуйста, вообще не понимаю как делать нужно написать программу на фортране для...

Заполнить матрицу случайными числами, найти сумму отрицательных элементов
Заполнить матрицу P размерности 7х9 случайными числами из диапазона (-25;35). Вывести ее на экран....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru