• #9 楼 @Martin91 恩恩,谢啦

  • 问题就出在数组上

  • 我解决了,用数组的 clear 来清除影响

  • 万分感谢 #4 楼 @linjunhalida

  • ###字体不知道怎么调大,只有各位大大自己浏览器调了,感谢各位指点

    $sz1 = [["*"], ["*"], ["1", "7"]],[["*"], ["*"], ["4", "2"]],[["3"], ["*"], ["*"]],[["*"], ["*"], ["6"]],[["*"], ["5"], ["*"]],[["*"], ["*"], ["6"]],[["*"], ["*"], ["1", "7"]],[["8"], ["*"], ["*"]],[["*"], ["9"], ["*"]],[["*"], ["10"], ["*"]],[["*"], ["*"], ["*"]]
    i=0
    
    while i<$sz1.size do
      p $sz1[i]
      i = i + 1
    end
    puts
    
    def read(p,temp1,temp5)
      temp1.push(p.to_s)#进队列
      while !temp1.empty? do
        t=temp1.shift#.shift出队列
        if !temp5.include?(t)&& t!="*"
          temp1=temp1+ $sz1[t.to_i][2] #合并数组,即进队列
          temp5.push(t) #单个数据进队列
        end
      end
      return temp5.sort #.uniq去掉重复元素
    end
    
    def read2(p,temp2,temp3,temp4)
    #先把能得到的起始点找出
      while !temp2.empty? do
        t=temp2.shift #.shift出队列
    
        if $sz1[t.to_i][p][0]!="*" 
          temp3.push($sz1[t.to_i][p][0]) #进队列
        end
      end
    
      while !temp3.empty? do
        t=temp3.shift#.shift出队列
        if !temp4.include?(t)&& t!="*"
          temp3=temp3+ $sz1[t.to_i][2] #合并数组,即进队列
          temp4.push(t) #单个数据进队列
        end
      end
      return temp4.sort
    end
    
    #初始化数组
    temp1=Array.new #接下来要读的数,队列
    temp2=Array.new #已经读过的数
    temp3=Array.new #已经读过的数
    temp4=Array.new #已经读过的数
    temp5=Array.new #已经读过的数
    
    temp2=read 0,temp1,temp5
    p temp2
    p read2 1,temp2,temp3,temp4
    temp2=read 0,temp1,temp5
    p temp2
    p read2 0,temp2,temp3,temp4
    
  • #2 楼 @Martin91 你好,请问为什么调用两次函数结果会和分两次单次执行的结果不一样,markdown 代码我稍后贴上

  • 执行: temp2=read 0,temp1,temp5 p temp2 p read2 1,temp2,temp3,temp4 temp2=read 0,temp1,temp5 p temp2 p read2 0,temp2,temp3,temp4 结果: [[""], [""], ["1", "7"]] [[""], [""], ["4", "2"]] [["3"], [""], [""]] [[""], [""], ["6"]] [[""], ["5"], [""]] [[""], [""], ["6"]] [[""], [""], ["1", "7"]] [["8"], [""], [""]] [[""], ["9"], [""]] [[""], ["10"], [""]] [[""], [""], ["*"]]

    ["0", "1", "2", "4", "7"] ["1", "2", "4", "5", "6", "7"] ["0", "1", "2", "4", "7"] ["1", "2", "3", "4", "5", "6", "7", "8"]

    输出结果应该不一样啊

    执行: temp2=read 0,temp1,temp5 p temp2 p read2 1,temp2,temp3,temp4 结果: [[""], [""], ["1", "7"]] [[""], [""], ["4", "2"]] [["3"], [""], [""]] [[""], [""], ["6"]] [[""], ["5"], [""]] [[""], [""], ["6"]] [[""], [""], ["1", "7"]] [["8"], [""], [""]] [[""], ["9"], [""]] [[""], ["10"], [""]] [[""], [""], ["*"]]

    ["0", "1", "2", "4", "7"] ["1", "2", "4", "5", "6", "7"]

    执行: temp2=read 0,temp1,temp5 p temp2 p read2 0,temp2,temp3,temp4 结果: [[""], [""], ["1", "7"]] [[""], [""], ["4", "2"]] [["3"], [""], [""]] [[""], [""], ["6"]] [[""], ["5"], [""]] [[""], [""], ["6"]] [[""], [""], ["1", "7"]] [["8"], [""], [""]] [[""], ["9"], [""]] [[""], ["10"], [""]] [[""], [""], ["*"]]

    ["0", "1", "2", "4", "7"] ["1", "2", "3", "4", "6", "7", "8"]

    #多了个 5!!!!!还有,,,其他问题,总之为什么会互相干扰?????