В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
leovd
leovd
15.05.2020 06:48 •  Информатика

По информатике. pascal или delphi с подробным решением и объяснениями! банкомат в некотором государстве в обращении находятся банкноты определенных номиналов. национальный банк хочет, чтобы банкомат выдавал любую за сумму при минимального числа банкнот, считая, что запас банкнот каж дого номинала неограничен. национальному банку решить эту . входные данные первая строка входных данных содержит натуральное число n не превосходящее 100 — количество номиналов банкнот в обращении. вторая строка входных данных содержит n различных натуральных чисел x1, x2, xn, не превосходящих 106 — номиналы банкнот. третья строчка содержит натуральное число s, не превосходящее 106 —сумму, которую необходимо выдать. выходные данные программа должна найти представление числа s виде суммы слагаемых из множества xi, содержащее минимальное число слагаемых и вывести это представление на экран (в виде последовательности чисел, разделенных пробелами). если таких представлений существует несколько, то программа должна вывести любое (одно) из них. если такое представление не существует, то программа должна вывести строку no solution. примеры входные данные 5 1 3 7 12 32 40 выходные данные 32 7 1

Ответ:
anastasiiauski
anastasiiauski
03.10.2020 15:42
Var v:array [0..100000] of integer;    a:array [0..100,0..100000] of integer;    m,p,k,w:integer;
procedure step(z,ma:integer);beginif z>0 then       if a[z,ma]<>a[z-1,ma] then                             if a[z-1,ma]<a[z-1,ma-v[z]]+v[z] then                                                              begin step(z-1,ma-v[z]);                                                                    write(v[z],' ');                                                              end                                                              else step(z-1,ma)                                                              else step(z-1,ma); end;

beginread(k);for p:=1 to k do begin   read(v[p]);   end;read(w);for p:=1 to k do begin   for m:=1 to w do begin      if m-v[p]>=0 then a[p,m]:=(max(a[p-1,m-v[p]]+v[p],a[p-1,m]))                   else a[p,m]:=a[p-1,m];      end;      end;if a[k,w]=w then step(k,w)            else writeln('No solution');end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?