Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 31.10.2019
Сообщений: 3

Найти путь из клетки (1, 1) в клетку (N, N), чтобы сумма цифр в клетках, через которые он пролегает, была минимальной

20.12.2019, 17:29. Показов 2255. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку (N, N), чтобы сумма цифр в клетках, через которые он пролегает, была минимальной; из любой клетки ходить можно только вниз или вправо. Входные данные число N. В следующих N строках содержатся по N цифр без пробелов. (2 <= N <= 250) Выходные данные выведите N строк по N символов. Символ «#» (решетка) показывает, что маршрут проходит через эту клетку, а «.» (точка) - что не проходит. Если путей с минимальной суммой цифр несколько нужно вывести все


Сказали что бы массив заполнятся рандомно...как только пытаюсь поставить алгоритм для случайных чисел выдает мне ошибку "Не удалось открыть фаил....Код ошибки 0х80070002"

#include <stdlib.h>
#include <iostream>

using namespace std;

const int N = 3;
const int max_number = 9;

template < class Type > void printMatrix(Type m[N][N])
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
cout << m[i][j] << " ";
cout << endl;
}
}

void searchPath(int m[N][N], char result[N][N])
{
const int max_length = (N - 1) * (N - 1) * max_number + 1;
int min[N][N];

for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
min[i][j] = max_length;

min[0][0] = m[0][0];

for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
{
if (i != N - 1)
{
int path = min[i][j] + m[i + 1][j];
if (min[i + 1][j] > path) min[i + 1][j] = path;
}
if (j != N - 1)
{
int path = min[i][j] + m[i][j + 1];
if (min[i][j + 1] > path) min[i][j + 1] = path;
}
}

for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
result[i][j] = '.';

result[N - 1][N - 1] = '#';

for (int i = N - 1, j = N - 1; j != 0 || i != 0; )
{
if (i != 0)
{
if (min[i][j] == min[i - 1][j] + m[i][j])
{
i--;
result[i][j] = '#';
continue;
}
}
if (j != 0)
{
if (min[i][j] == min[i][j - 1] + m[i][j])
{
j--;
result[i][j] = '#';
continue;
}
}
}
}

int main(int argc, char* argv[])
{
int m1[N][N] =
{

};

int m2[N][N] =
{
{0,2,0},
{2,3,0},
{2,0,0}
};

int m3[N][N] =
{
{1,3,5},
{6,3,2},
{3,8,4},
};

char result[N][N];

printMatrix(m1);
searchPath(m1, result);
printMatrix(result);
cout << endl;

printMatrix(m2);
searchPath(m2, result);
printMatrix(result);
cout << endl;

printMatrix(m3);
searchPath(m3, result);
printMatrix(result);
cout << endl;

system("pause");

return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2019, 17:29
Ответы с готовыми решениями:

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

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

В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку (N, N
В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку (N, N), чтобы...

1
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
20.12.2019, 18:49
1. Код такой длины лучше кидать в спойлер
Кликните здесь для просмотра всего текста
вот так

2. Его обязательно нужно выделять
3. Это уже проблемы вашего компилятора
4. Для уверенности какой средой разработки и компилятором вы пользуетесь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2019, 18:49
Помогаю со студенческими работами здесь

Какую наибольшую стоимость может иметь путь из клетки (1, 1) в клетку (n, m), если передвигаться за 1 шаг можно только на правую или нижнюю клетку.
кому не трудно помогите сделать. если не трудно вам написать код. Дана прямоугольная таблица nxn клеток. В каждой клетке содержится...

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

Найти в диапазоне от 10 до 99 такие 3 последовательные числа, чтобы сумма их цифр была равна 15
Например: 13 14 15. 1+3+1+4+1+5=15.

В таблице клетки заполнены случайным образом цифрами от 0 до 9. Найти маршрут из клетки A(1,1) в клетку A(N,N)
В таблице NхN, клетки заполнены случайным образом цифрами от 0 до 9. Найти маршрут из клетки A(1,1) в клетку A(N,N) такой, что: 1) он...

В матрице выбрать n элементов в разных строках и разных столбцах так, чтобы их сумма была минимальной
Помогите,пожалуйста Добавлено через 2 часа 23 минуты примерный алгоритм как это можно сделать


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru