如何使用索引为2d数组赋值

时间:2015-06-09 05:49:57

标签: arrays ruby

我试图通过访问索引值来初始化二维数组。每当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]时,循环将永远运行。请帮我解决这个问题。

1 个答案:

答案 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"},{}]