Написать программу, определяющий суммарный вес камней - PascalABC.NET
Формулировка задачи:
1 Задача!!!
Один древний правитель, решил построить в свою честь пирамиду, для ее постройки, он использовал камни разного веса, при чем на вершине лежал 1 камень, следующий ярус состоял из 2 камней, далее 3 камня и т.д. Известен вес каждого камня. Написать программу определяющий суммарный вес камней, на пути начиная на вершине пирамиды и заканчивая на ее основании. Каждый шаг на таком пути может осуществляться по диагонали вниз и влево или вниз и вправо. Исходный файл в 1 строке содержит количество ярусов такой же пирамиды (n), последующая n строка содержит содержит веса камней по ярусу.(Пример на рисунке)Решение задачи: «Написать программу, определяющий суммарный вес камней»
textual
Листинг программы
begin
var n := ReadLnInteger('Рядов: n =');
var a : array [,] of Integer; Setlength(a, n, n);
n -= 1;
for var Row := 0 to n do
for var Col := 0 to Row do
a[Row, Col] := ReadLnInteger('Вес ' + (Col+1) + ' камня в ' + (Row+1) + ' ряду =');
for var Row := 1 to n do
begin
a[Row, 0] += a[Row-1, 0];
for var Col := 1 to Row do
a[Row, Col] += max(a[Row-1, Col-1], a[Row-1, Col]);
end;
var maxWeight := a[n,0];
for var Col := 1 to n do
if a[n, Col] > maxWeight then
maxWeight := a[n, Col];
WriteLn('Максимальный вес = ' + maxWeight);
end.
Объяснение кода листинга программы
В данном коде происходит следующее:
- Ввод количества строк (n) с помощью функции ReadLnInteger.
- Создание двумерного массива a размером n на n с помощью функции Setlength.
- Заполнение массива a весами камней в каждой строке с помощью двух вложенных циклов и функции ReadLnInteger.
- Внутренний цикл для суммирования весов камней в каждой строке, начиная со второй строки.
- Нахождение максимального веса камня в последней строке (n) с помощью цикла и функции max.
- Вывод максимального веса на экран с помощью функции WriteLn.