这道题审题很重要,开始做了一次,因为审题问题,很久都没做出来,卡了一段时间……

这道题题目解释的其实有争议,我是最后猜对的!也可能自己语文不好……

审题:

1.是一个满二叉树

2.根节点上也有开关,只不过要开始是false,然后过了求在变true,无语

3.根据满二叉树的特性不用构建二叉树的数据结构(坑)

4.总共16层,节点数 2的16次方减1个节点(2**16-1)

5.每个节点上都有一个开关,经过球后开关状态改变,这个改变只是改变本小球的开关状态,题目上的“它的状态会改变”(坑)

知道着一些,丢代码就简单了……

ruby语言,大家都用python我不会……

#创建记录小球开关状态数组
@jl=Array.new
#默认全部false,一个创建,用起来方便,本应(2**16)-1个
(2**16).times{@jl.push(false)}

#用函数嵌套的方法
def down(data)

	l=data*2   #左边树的号码
	r=data*2+1 #右边树的号码
	
	 #超过16层就跳出
	 if (l>=(2**16-1) ) 
		puts data   #如果到达第16层就输出结果并退出回溯
		return 0
	 end
	 
	if   @jl[data]
		#开 往右走
		@jl[data]=!@jl[data] #小球到达节点改变这个开关的状态
		return down(r)    #嵌套调用
	else
		#关 往左走
		@jl[data]=!@jl[data]
		return down(l)
	end
	
end


#运行12345次
12345.times{
	down(1) # 1是从根节点开始往下掉落
}

如果不懂可以留言问我,我们讨论……

Flag:

温馨提示: 此处内容需要评论本文后刷新才能查看,支付2元即可直接查看所有Flag。

小广告:关于获取西普实验吧所有Flag请点击这里查看索引

查看所有Flag文章需要输入密码,需要获取文章密码的童鞋请扫描下面微信或支付宝二维码捐助至少2元(老哥,捐多捐少是个缘分)之后发送支付凭证号联系我获取,Flag大全地址:Flag大全

新功能:捐款的小伙伴请联系我把自己的注册邮箱加入网站白名单,可以免回复看到本站所有Flag

PS:本站不是实验吧的官方站点,纯粹是个人博客,收取Flag费用仅是维持服务器费用,做站不易,且行窃珍惜!

微信二维码:
支付宝二维码: