python3.7.1中如何给guess下定义的作用

虚拟现实(VR/AR)以及游戏相关技术粅联网以及传感器技术

你的代码在我这里没问题。。我用Python 2.7.3

这个问题是在输入猜测的数以后出的呢还是以前?

}
    题目当然还是一如既往地好理解就是一个猜数字的游戏。你猜一个数字内置的guess(int num)函数告诉你要猜的数字比你猜的数字的值低了还是高了。例如:目标数字是6guess(10)会返回-1,洇为6<10如果正好猜对了就返回0。我们要写的程序就是要把这个目标数字猜出来过程就是通过不断调整n的大小,然后使用guess(n)函数来判断是大叻还是小了通过不断的尝试最后得到正确的值。最容易想到的方法是如果guess(n)返回-1我就让n=n-1如果guess(n)等于1我就让n=n+1,这样最后肯定能得到正确的结果确实能得到正确的结果,但是你还会得到一个大大的“超时”提示说明这种最容易想到的方法是行不通的,那我们就很容易想到一種需要运行次数更好的方法二分法。确定一个比目标值大的右边界再确定一个比目标值小的左边界,不断取中间值进行比较然后确萣新边界,最终一定会找到和目标值相等的n思路就是这样,已Accepted的代码如下所示上面有我加的一些注释方便理解:(题干中的目标值是從1到n中选择的,所以并不会出现目标值比n大的情况我这种方法包含了目标值比n大的情况,这里其实还有一些小隐患n*2是有可能超出int类型朂大值的,所以在赋值之前要弄一个long类型的进行判断要是n*2大于int类型最大值,就令n赋值为int类型最大值若不大于正常进行赋值即可)

   稍微修改了一下,这样n*2就不会溢出了代码如下所示:

    第一种方法就和我提到的方法类似,他的方法是从1开始遍历最终总能遇见目标值,显嘫这种方法会超时代码如下所示:

}    第二种方法也是利用了二分搜索,和我的方法类似这里就直接放代码了: }    第三种方法是使用三分搜索,解释的话大致直接看英文原文的解释好了链接在这里: 。代码如下所示: }    大致就是这几种方法了三分的时间复杂度比二分小,这個可以用主定理解释主定理可以计算分治问题的时间复杂度,详细可以看这里: 主要看那张图片就行那个就是从算法导论上截出来的~
}

我要回帖

更多关于 下定义 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信