我试图通过访问索引值来初始化二维数组。每当x < y
(对于前dp[0][1]
),它应该是0
,如果是x==y
,那么它应该是1
。
dp =Array.new(max+1,Array.new(3,0))
print dp
dp.each_index do |x|
dp[x].each_index do |y|
if x==y then
dp[x][y] = 1
elsif x<y then
dp[x][y] =0
end
end
end
print dp
在循环初始化之前,数组的所有值都是0
。但是在循环执行之后,所有值都变为1
。当我执行dp[x].insert(y,0)
而不是dp[x][y]
时,循环将永远运行。请帮我解决这个问题。
答案 0 :(得分:1)
试试这个:
dp = Array.new(3){Array.new(3)}
print dp
dp.each_index do |x|
dp[x].each_index do |y|
if x==y then
dp[x][y] = 1
elsif x < y then
dp[x][y] = 0
end
end
end
输出为:
[[1, 0, 0], [nil, 1, 0], [nil, nil, 1]]
注意:这是一个粗略的想法,您可以根据需要更新它,或者可以让我更新。
更新说明:
a = Array.new(2,Hash.new)
a[0]['cat'] = 'feline'
a # => [{"cat"=>"feline"},{"cat"=>"feline"}]
a[1]['cat'] = 'Felix'
a # => [{"cat"=>"Felix"},{"cat"=>"Felix"}]
a = Array.new(2){Hash.new} #**Multiple instances**
a[0]['cat'] = 'feline'
a # =>[{"cat"=>"feline"},{}]