问题就出在数组上
我解决了,用数组的 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
执行: 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!!!!!还有,,,其他问题,总之为什么会互相干扰?????