#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n(0),m(0);
cin >> n >> m;
int matrix[n][m];
char arr[n][m];
arr[0][0] = '0';
for(int i = 0;i<n;++i){
for(int j = 0;j<m;++j){
cin >> matrix[i][j];
if(!i && !j)continue;
if(!i){
matrix[i][j] += matrix[i][j-1];
arr[i][j] = 'R';
}
if(!j){
matrix[i][j] += matrix[i-1][j];
arr[i][j] = 'D';
}
if(i && j){
matrix[i][j] += max(matrix[i-1][j],matrix[i][j-1]);
if(max(matrix[i-1][j],matrix[i][j-1]) == matrix[i-1][j])arr[i][j] = 'D';
else arr[i][j] = 'R';
}
}
}
cout << matrix[n-1][m-1];
cout << "\n";
string s;
for(int i = n-1;;){
for(int j = m-1;;){
if(arr[i][j] == '0'){
reverse(s.begin(),s.end());
s.erase(0,1);
cout << s << endl;
return 0;
}
s.push_back(arr[i][j]);
s.push_back(' ');
if(arr[i][j] == 'R'){
j -= 1;
continue;
}
if(arr[i][j] == 'D'){
i -= 1;
continue;
}
}
}
cout << endl;
return 0;
}
Объяснение:
Давайте узнаем, что такое алгоритм, и какие существуют виды его исполнителей.
Алгоритм – это описание последовательности шагов в решении задачи, приводящих от исходных данных к требуемому результату.
Исполнитель - это объект выполнять алгоритмы с набора команд
Процесс создания алгоритмов называется –алгоритмизацией.
Всякий алгоритм составляется в расчете на определенного исполнителя. Им может быть человек, робот, компьютер и др.
Исполнитель алгоритма – это человек или автоматическое устройство, которое воспринимать и исполнять алгоритм.
Запишите исполнителей для приведённых ниже видов работ:
Уборка мусора во дворе – дворник
Перевозка пассажиров в поезде – машинист
Приём экзаменов в школе – учитель
Приготовление еды в ресторане – повар
Выполнение домашнего задания – ученик
Чтобы составить алгоритм для исполнителя, нужно знать, какие команды исполнитель может понять и исполнить, а какие нет.
Система команд исполнителя (СКИ) – это перечень элементарных предписаний (команд), которые исполнитель может исполнять.
Приведите еще примеры алгоритмов. ответы учащихся …
Из приведенных вами примеров видно, что мир алгоритмов очень разнообразен. Но, несмотря на это, можно выделить общие свойства, которыми обладает любой алгоритм.
Алгоритм обладает следующими свойствами:
Целенаправленность – любой алгоритм направлен на достижение определенной цели. Чаще всего целью алгоритма является получение результата при решении какой-нибудь задачи.
Дискретность– алгоритм состоит из элементарных предписаний (команд).
Понятность – элементарные предписания (команды) алгоритма должны быть точно сформулированы и однозначно понятны исполнителю, а исполнитель должен быть в состоянии их выполнить.
Однозначность – после исполнения очередного элементарного предписания (команды) исполнителю точно определено, что делать дальше.
Массовость – алгоритм можно использовать для решения той же задачи при других допустимых исходных данных.