Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
5 / 6 / 2
Регистрация: 14.03.2015
Сообщений: 106

В матрице найти такой путь от первой колонки к последней, чтобы сумма чисел пройденных по пути была минимальная

06.01.2019, 14:38. Показов 1173. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, нужен алгоритм. Формируется двумерная таблица из случайных цифр 1-9. Нужно найти такой путь от первой колонки таблицы к последней, чтобы сумма чисел пройденных по пути была минимальная. Двигаться можно прямо , вбок и по-диагонали. Юзер вводит размеры таблицы. Результат программы строка чисел через которые проходит путь и их сумма.

Пример работы:

Название: пример.JPG
Просмотров: 41

Размер: 9.9 Кб

Результат: Путь (3,1,5,1,7) Сумма 18
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2019, 14:38
Ответы с готовыми решениями:

Найти такой путь из клетки [i1, j1] в клетку [i2, j2], чтобы сумма чисел по данному пути была минимальной
Здравствуйте, есть такая задача: 1.Дан двумерный числовой массив размером N1xN2. 2.Найти такой путь из клетки в клетку , чтобы...

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

Найти такой путь из клетки (1,1) в клетку (А, В), чтобы сумма чисел равнялась заданному числу К
Помогите написать программу к задаче Дано шахматную доску размером М на N. Шахматная фигура "мини-тура" может перемещаться...

11
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
06.01.2019, 16:55
Цитата Сообщение от Akellorio Посмотреть сообщение
Ребят, нужен алгоритм
Можно просто перебрать все пути и выбрать минимальный. По времени это не очень эффективно будет:

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <cfenv>
#include <cinttypes>
#include <cstdint>
#include <cwchar>
#include <cwctype>
 
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
 
using namespace std;
 
#define int long long int 
 
void get_min(const vector<vector<int>>& a, int n, int i, int j, int cur, int& ans) {
  if (i >= n || j >= n || i < 0 || j < 0)
    return;
 
  if (j == n - 1) {
    ans = min(ans, cur + a[i][j]);
 
    return;
  }
 
  get_min(a, n, i, j + 1, cur + a[i][j], ans);
  get_min(a, n, i + 1, j, cur + a[i][j], ans);
  get_min(a, n, i + 1, j + 1, cur + a[i][j], ans);
}
 
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.precision(9);
 
  int n;
  int m;
  cin >> n >> m;
 
  vector<vector<int>> a(n, vector<int>(m));
 
  random_device rd;
  mt19937 eng(rd());
  uniform_int_distribution<int> dist(1, 9);
 
  for (auto& i : a) {
    for (auto& j : i)
      j = dist(eng);
  }
 
  for (const auto& i : a) {
    copy(i.cbegin(), i.cend(), ostream_iterator<int>(cout, " "));
 
    cout << '\n';
  }
 
  int ans = numeric_limits<int>::max();
 
  for (int i = 0; i < n; ++i)
    get_min(a, n, i, 0, 0, ans);
 
  cout << ans;
}
0
5 / 6 / 2
Регистрация: 14.03.2015
Сообщений: 106
06.01.2019, 17:37  [ТС]
Очень сложно... Это должен быть небольшой проект по плюсам для первокурсника. Меня одно только количество подключённых библиотек повергло в ужас.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
06.01.2019, 19:08
Цитата Сообщение от Akellorio Посмотреть сообщение
Меня одно только количество подключённых библиотек повергло в ужас
И меня.


P.S. Оставьте vector, algorithm, iostream, limits, random, iterator, больше, вроде, ничего не надо.
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
06.01.2019, 19:42
Цитата Сообщение от Akellorio Посмотреть сообщение
Меня одно только количество подключённых библиотек повергло в ужас.

Не по теме:

это шаблон для олимпиадного программирования, лень было думать что нужно а что нет поэтому отсавил как есть

0
5 / 6 / 2
Регистрация: 14.03.2015
Сообщений: 106
06.01.2019, 20:49  [ТС]
Ребят, нужно простое решение проблемы, стандартными средствами языка , без десятков библиотек и сторонних функций. Сорян что такой придирчивый , но мне просто это всё ещё придётся объяснять...
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
06.01.2019, 21:10
Цитата Сообщение от Akellorio Посмотреть сообщение
Ребят, нужно простое решение проблемы, стандартными средствами языка , без десятков библиотек и сторонних функций. Сорян что такой придирчивый , но мне просто это всё ещё придётся объяснять...
оч сложное решение особенно из-за инклюдов да я ведь его не объяснил и код такой сложный да особенно создание двумерного вектора и прочее ага
какие-то нестандартные средства языка по типу векторов и рандома ага

>перебрать все пути
>оч сложное решение

короче, решение никому не нужно. Нужно как-то решить так чтобы автор понял а если не понял значит решение сложное и ты задачу не решил и вообще поэтому иди лесом ведь ему еще это объяснять

Кому-то дают задачу чтобы подкачаться а он даже списывая не хочет ничего понимать

Вот решение: перебор всех путей или дп. Решайте, удачи.
0
Эксперт .NET
 Аватар для Usaga
14291 / 9376 / 1352
Регистрация: 21.01.2016
Сообщений: 35,334
07.01.2019, 09:49
Akellorio, так вам и предложили решение средствами самого языка, без единой сторонней библиотеки.
0
11 / 14 / 12
Регистрация: 20.03.2017
Сообщений: 182
07.01.2019, 10:09
Почему у меня не работает предложенное решение? Ввожу размер и программа завершается, или это не полное?
0
Эксперт .NET
 Аватар для Usaga
14291 / 9376 / 1352
Регистрация: 21.01.2016
Сообщений: 35,334
07.01.2019, 10:43
Button123, воспользуйтесь отладчиком, чтобы понять что происходит.
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
07.01.2019, 13:59
Цитата Сообщение от Button123 Посмотреть сообщение
Почему у меня не работает предложенное решение? Ввожу размер и программа завершается, или это не полное?
в коде ошибки, вот исправленный (соре не досмотрел):

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
#include <iostream>
#include <iterator>
#include <random>
 
using namespace std;
 
#define int long long int 
 
void get_min(const vector<vector<int>>& a, int n, int m, int i, int j, int cur, int& ans) {
  if (i >= n || j >= m || i < 0 || j < 0)
    return;
 
  if (j == m - 1) {
    ans = min(ans, cur + a[i][j]);
 
    return;
  }
 
  get_min(a, n, m, i, j + 1, cur + a[i][j], ans);
  get_min(a, n, m, i + 1, j, cur + a[i][j], ans);
  get_min(a, n, m, i + 1, j + 1, cur + a[i][j], ans);
}
 
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.precision(9);
 
  int n;
  int m;
  cin >> n >> m;
 
  vector<vector<int>> a(n, vector<int>(m));
 
  random_device rd;
  mt19937 eng(rd());
  uniform_int_distribution<int> dist(1, 9);
 
  for (auto& i : a) {
    for (auto& j : i)
      j = dist(eng);
  }
 
  for (const auto& i : a) {
    copy(i.cbegin(), i.cend(), ostream_iterator<int>(cout, " "));
 
    cout << '\n';
  }
 
  int ans = numeric_limits<int>::max();
 
  for (int i = 0; i < n; ++i)
    get_min(a, n, m, i, 0, 0, ans);
 
  cout << ans;
}
0
11 / 14 / 12
Регистрация: 20.03.2017
Сообщений: 182
07.01.2019, 17:44
Все теперь верно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.01.2019, 17:44
Помогаю со студенческими работами здесь

В дереве найти такой пусть, чтобы сумма узлов была равна заданному числу
Задача: В дереве найти такой пусть, чтобы сумма узлов была равна 50. В целом, понятно. У меня вышло найти тот узел, в котором эта...

Найти последовательность из трех чисел, чтобы их сумма была равна 10
Нужна помощь!!! Задание такое: Из текстового файла считать матрицу любой размерности. НАДО (ПО СТРОКАМ) найти последовательность из трех...

Ввести пароль,чтобы сумма первой и последней цифры =8
Алгоритм проверки корректности пароля сумма первой и последней цифры =8. проблема именно в задании алгоритма. помогите,пожалуйста

Даны 6 чисел Найти среди них такие два числа, чтобы их сумма была равна 8
только начинаю изучение питона помогите с задачами, пожалуйста 5) Даны 6 чисел. Найти среди них такие два числа, чтобы их сумма была...

Исключить из данного списка такой элемент, чтобы сумма элементов, которые остались, была равна 10
Здравствуйте, не дружу с Лиспом, нужна помощь в решении задачи. Задание: Исключить из данного списка такой элемент, чтобы сумма...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru