Задача на динамическое программирование. Советую почитать поподробнее на эту тему в интернете. Подобные задачи для изучения: платная лестница, кузнечик, последовательность Фибоначчи. #include <iostream> #include <cmath> using namespace std; int main() { int n; cin >> n; int height[n]; for(int i=0; i<n; i++) cin >> height[i]; int energy[n]; for(int i=1; i<n; i++) energy[i] = energy[i-1] + abs(height[i]-height[i-1]); cout << height[n-1]; return 0; }
Из условия видно, что количество оценок, распределенных экзаменатором различное и вопрос задачи указывает на одну из всех возможных оценок, поэтому воспользуемся подходом к определению количества информации для неравновероятных событий, а именно формулой Шеннона.Обозначим i4 – количество информации в сообщении "Абитуриент Сидоров получил четверку", i4или3 – количество информации в сообщении "Абитуриент Иванов не сдал экзамен на отлично", I - информационный объем зрительного сообщения о полученной оценки абитуриентом Сидоровым, к – показатель определенной оценки, р3, р4, р5 – вероятности выставления троек, четверок и пятерок соответственно, р4или3 – вероятность выставления оценки не отлично, тогда i4 или 3=3 -log27 бита, i4 = 2 бита. Основные формулы:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n;
cin >> n;
int height[n];
for(int i=0; i<n; i++)
cin >> height[i];
int energy[n];
for(int i=1; i<n; i++)
energy[i] = energy[i-1] + abs(height[i]-height[i-1]);
cout << height[n-1];
return 0;
}