На каждой из n + 2 ступенек лестницы записано целое число, причем на первой и на последней ступеньке записано число 0. На первой ступеньке стоит человек, которому необходимо подняться на последнюю ступеньку. За один шаг он может подниматься на любое число ступенек, не превосходящее k.
Подсчитаем сумму всех чисел, написанных на ступеньках, на которые наступил человек. Найдите наибольшее возможное значение этой суммы.
Входные данные
В первой строке записано число n (0 ≤ n ≤ 1000). Во второй строке записано n целых чисел, не превосходящих по модулю 1000, разделенных пробелами - числа, записанные на ступеньках (за исключением первой и последней ступеньки, на которых записаны нули). В третьей строке записана максимальная величина шага человека k (1 ≤ k ≤ n).
Выходные данные
Выведите максимально возможную сумму чисел, записанных на ступеньках, на которые наступил человек.
#include<iostream>
using namespace std;
int main(){
int i,j=0,a,b,mas[1001],max;
cin>>a;
for(i=1;i<=a;i++)
cin>>mas[i];
cin>>b;
mas[0]=0;
mas[a+1]=0;
for(i=1;i<=a+1;i++){
max=mas[j];
for( j=i-b;j<i;j++){
if(j<0)j=0;
if(max<mas[j]) max=mas[j];
}
mas[i]=max+mas[i];
}
cout<<mas[a+1]<<endl;
}
Есть решение которого нет на сайте? Пиши admin@devexe.top