Comment detail

自然数の分割(別表現) (Nested Flatten)

単純に再帰。 Windows上のVM、Intel Core2 2.4GHz で 14秒でした。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def part(n, mx, a, i)
  if n == 0
    i.times {|j| puts '□'*a[j] }
    puts
  else
    [n, mx].min.downto(1) do |k|
      a[i] = k
      part(n-k, k, a, i+1)
    end
  end
end

def young(n)
  part(n, n, Array.new(n), 0)
end
> - 分割は長さが短いものが先
すみません、見落としてましたorz

Index

Feed

Other

Link

Pathtraq

loading...