Одного неформала выгнали с работы, и теперь ему надо как-то зарабатывать себе на жизнь. поразмыслив, он решил, что сможет иметь неплохие деньги на продаже собственных волос. известно, что пункты приема покупают волосы произвольной длины стоимостью с у.е. за каждый сантиметр. так как волосяной рынок является динамичным, то цена одного сантиметра волос меняется каждый день как и курс валют. неформал является хорошим бизнес-аналитиком. он смог вычислить, какой будет цена одного сантиметра волос в каждый из ближайших n дней (для удобства пронумеруем дни в хронологическом порядке от 0 до n-1). теперь он хочет определить, в какие из этих дней ему следует продавать волосы, чтобы по истечению всех n дней заработать максимальное количество денег. заметим, что волосы у неформала растут только ночью и вырастают на 1 сантиметр за ночь. следует также учесть, что до 0-го дня неформал с горя подстригся наголо и к 0-му дню длина его волос составляла 1 сантиметр. язык c++
264
476
Ответы на вопрос:
#include < iostream> #include < map> #include < vector> using namespace std; map< pair< int, int> , int> saved_rec; map< int, pair< int, int> > path; int max_cost(const vector< int> & cost, int day, int length) { if (day + 1 < length) length = day + 1; if (saved_rec[make_pair(day, length)] ! = 0) return saved_rec[make_pair(day, length)]; int tmp_cost, max = cost[day] * length, max_i = length; if (day ! = 0) for (int i = 0; i < = length; ++i) { tmp_cost = max_cost(cost, day - 1, length-i) + cost[day] * i; if (tmp_cost > max) { max = tmp_cost; max_i = i; } } saved_rec[make_pair(day, length)] = max; if (max_i ! = 0) path[max] = make_pair(day, max_i); return max; } int main() { vector< int> cost = { 6, 2, 5, 4, 5, 3, 3, 4}; int last_day_num = cost.size() - 1, total_length = cost. max; max = max_cost(cost, last_day_num, total_length); cout < < "max profit: " < < max < < endl; pair< int, int> day_count; int sm = 0; do { day_count = path[max]; cout < < "day: " < < day_count.first < < ", length: " < < day_count.second < < endl; max -= cost[day_count.first] * day_count.second; } while (max ! = 0); }
uses crt; const N=10; var a:array [1..N] of integer; i,j,tmp:integer; begin randomize; clrscr; for i:=1 to N do a[i]:=-100+random(201); Writeln('Macciv do coptupovki'); for i:=1 to N do Write(a[i], ' '); for i:=1 to N-1 do for j:=i+1 to N do if a[i]>a[j] then begin tmp:=a[j]; a[j]:=a[i]; a[i]:=tmp; end; Writeln; Writeln('Macciv pocle coptupovki'); for i:=1 to N do Write(a[i], ' '); readkey end.Двухмерный массив 10 на 10 (array) с названием массива и номером ячейки, заполнен генератором случайных чисел в диапазоне 30.надеюсь смогла
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
сулейбанова20.08.2020 03:43
-
tanysha495724.12.2021 03:25
-
цыпабезума30.05.2020 15:35
-
Katyaguccigang12.10.2022 21:33
-
Ggggggghhhj07.08.2022 12:11
-
соняка200811.04.2023 18:52
-
Kadokawa28.06.2023 13:05
-
тимур62321.04.2023 12:40
-
anitakuznetsova08.01.2020 00:31
-
nvanislavskaya23.07.2021 07:16
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.