Commit 41a35d3

mo <mokha@cisco.com>
2017-06-13 23:40:23
add dp solution for coin problem.
1 parent 9952c2d
Changed files (1)
lib/coins.rb
@@ -0,0 +1,21 @@
+require 'pp'
+# https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/#!
+
+def coins(values, sum)
+  min = Array.new(sum + 1, Float::INFINITY)
+  min[0] = 0
+
+  for i in (0..sum)
+    for j in (0..(values.size - 1))
+      break if values[j] > i
+      coin = values[j]
+
+      if min[i - coin] + 1 < min[i]
+        min[i] = min[i - coin] + 1
+      end
+    end
+  end
+  min.last
+end
+
+PP.pp coins([1, 3, 5], 11)