Project Euler Problem 67
問題
By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23. [3] [7]5 2[4]6 8 5[9]3 That is, 3 + 7 + 4 + 9 = 23. Find the maximum total from top to bottom in triangle.txt (right click and 'Save Link/Target As...'), a 15K text file containing a triangle with one-hundred rows. NOTE: This is a much more difficult version of Problem 18. It is not possible to try every route to solve this problem, as there are 2^99 altogether! If you could check one trillion 10^12 routes every second it would take over twenty billion years to check them all. There is an efficient algorithm to solve it. ;o)
Problem 17の100段バージョン!
全探索で探索したら200億年以上かかるんだって〜
入力
triangle.txt
ソース
File::open("triangle.txt") do |f| tri = f.readlines.map{|l| l.split(" ").map {|n| n.to_i}} (1...tri.size).each do |i| (0...tri[i].size).each do |j| max = 0 max = tri[i - 1][j - 1] if j - 1 >= 0 max = [max, tri[i - 1][j]].max if tri[i - 1].size > j tri[i][j] += max end end puts tri.last.max end
解答
7273
感想
コピペのみ(汗
難なく終了!
追加
ファイル入力に変更