kenaxt #4541(2007/12/01 10:25 GMT) [ Ruby ] Rating0/0=0.00
あえて解析的でない方法をトライしましたが、遅い・・・。 処理の前提は、 ・[5,1,1] --> [4,1,2](先頭を-1、最後を+1) --> [4,2,1](ソート)を 繰り返して配列に追加していけば、全ての組み合わせを求められる ・[6,2,2] --> [5,1,1,1]の様に長さが変わる時は先頭以外は全て1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
def young(n,a=[[n]]) while a[-1][0] > 1 a.each {|i| w = i[0..-1] while w[0] - w[-1] > 1 w[0] -= 1 w[-1] += 1 a << w.sort.reverse end } print_young(a.uniq) lth = a[-1].size a = [[n - lth] + [1] * lth] end end def print_young(a) a.each{|i|p i} end young(n = gets.chomp.to_i)
Rating0/0=0.00-0+
[ reply ]
kenaxt #4541() [ Ruby ] Rating0/0=0.00
Rating0/0=0.00-0+
[ reply ]