回 帖 发 新 帖 刷新版面

主题:帮帮忙

有一种数列型态如下:3、10、5、16、8、4、2、1,它的最后一项一定是 1,而第一项由使用者自行给予,它的规则是,如果这一项是奇数,则它的下一项为这一项的三倍加一,如果这一项是偶数,则它的下一项是这一项的一半,如此重复下去,直到 1 为止。
设i>0,j<1000000,计算以从 i 到 j 之间所有整数开头的数列中,最大的数列长度 m 。
在此声明我不是要别人替我做作业,我只是想求教简便的算法,因为当数列的第一个数很大时,若直接按照题目的意思直接写程序,程序的效率会很低。

回复列表 (共1个回复)

沙发

直接做吧。

记忆化搜索递归层次太大而且边界难定。

BFS有些地方数字太大可能会造成溢出。

我来回复

您尚未登录,请登录后再回复。点此登录或注册