Написать программу, определяющий суммарный вес камней - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д