Я столкнулся с этой проблемой на одном тренинге. А именно, мы дали N
разные значения (N<= 100
). Позвольте назвать этот массив A[N]
, для этого массива A мы уверены, что у нас есть 1 в массиве и A[i]
& le; 10 9. Во-вторых, мы дали число S
, где S
& le; 10 9.
Теперь нам нужно решить проблему классической монеты с этими значениями. На самом деле нам нужно найти минимальное количество элементов, которое будет равно точно S
. Каждый элемент из A
может использоваться бесконечно много раз.
-
Ограничение по времени: 1 с
-
Предел памяти: 256 МБ
Пример:
S = 1000, N = 10
A[] = {1,12,123,4,5,678,7,8,9,10}. The result is 10.
1000 = 678 + 123 + 123 + 12 + 12 + 12 + 12 + 12 + 12 + 4
Что я пробовал
Я попытался решить эту проблему с помощью классического метода программирования с динамическим программированием, но он использует слишком много памяти, и это превзошло предел памяти.
Я не могу понять, что мы должны хранить в отношении этих ценностей. Спасибо заранее.
Вот пара тестовых примеров, которые не могут быть решены с помощью проблемы классической dp-монеты.
S = 1000000000 N = 100
1 373241370 973754081 826685384 491500595 765099032 823328348 462385937
251930295 819055757 641895809 106173894 898709067 513260292 548326059
741996520 959257789 328409680 411542100 329874568 352458265 609729300
389721366 313699758 383922849 104342783 224127933 99215674 37629322
230018005 33875545 767937253 763298440 781853694 420819727 794366283
178777428 881069368 595934934 321543015 27436140 280556657 851680043
318369090 364177373 431592761 487380596 428235724 134037293 372264778
267891476 218390453 550035096 220099490 71718497 860530411 175542466
548997466 884701071 774620807 118472853 432325205 795739616 266609698
242622150 433332316 150791955 691702017 803277687 323953978 521256141
174108096 412366100 813501388 642963957 415051728 740653706 68239387
982329783 619220557 861659596 303476058 85512863 72420422 645130771
228736228 367259743 400311288 105258339 628254036 495010223 40223395
110232856 856929227 25543992 957121494 359385967 533951841 449476607
134830774
OUTPUT FOR THIS TEST CASE: 5
S = 999865497 N = 7
1 267062069 637323855 219276511 404376890 528753603 199747292
OUTPUT FOR THIS TEST CASE: 1129042
S = 1000000000 N = 40
1 12 123 4 5 678 7 8 9 10 400 25 23 1000 67 98 33 46 79 896 11 112 1223 412
532 6781 17 18 19 170 1400 925 723 11000 607 983 313 486 739 896
OUTPUT FOR THIS TEST CASE: 90910