以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 计算机考研交流 』 (http://bbs.xml.org.cn/list.asp?boardid=67) ---- 请教DS课本上的两个问题 (http://bbs.xml.org.cn/dispbbs.asp?boardid=67&rootid=&id=48302) |
-- 作者:蝶影 -- 发布时间:6/10/2007 6:37:00 AM -- 请教DS课本上的两个问题 DS课本P286 败者树初始化代码 1)中间有三行个代码 应该是s=2^(logn-1)吧?s应该代表次底层的结点个数吧?(n为选手数) 2)if(n%2) |
-- 作者:virlinG -- 发布时间:6/10/2007 12:50:00 PM -- s=2^log(n-1),s代表次底层第一个内部节点的编号,可由公式for(s=1;2*s<=n-1;s+=s)推出。 内部结点B[(n-1)/2]的父结点的下标与n/2无关,这里不是求B[(n-1)/2]的父结点的下标,B[(n-1)/2] |
-- 作者:蝶影 -- 发布时间:6/10/2007 7:33:00 PM -- 还有两个问题: 1.s=2^log(n-1),这个公式的log是以2为底的吧?那s=2^log(n-1)不就等于n-1了? 2.也就是LowExt+1和它的父节点比赛,然后败者还存回LowExt+1的父节点里?那为什么不写成(n-1)/2,还非得写成n/2... |
-- 作者:virlinG -- 发布时间:6/10/2007 11:31:00 PM -- 我大概说一下,可能不太准确,一直在看离散,DS还没开始 1. s=2^log(n-1)在这里她默认先计算log(n-1)并取下整, 可能P282讲过,在这里的注释中省略了 2. Play(n/2,B[(n-1)/2],LowExt+1,winner,loser)中(n-1)/2和n/2结果是相同的,但逻辑上有区别,(n-1)/2:L[LowExt+1]兄弟节点的子节点中胜者存入L[LowExt+1]兄弟节点的父节点,左路的归并其父节点自然用L[LowExt+1]兄弟节点表示:(n-1)/2 n/2:LowExt+1和它的父节点比赛,这时逻辑上用LowExt+1来表示其父节点比较合理。 写成n/2也可能是和Play((offset+i)/2,i-1,i,winner,loser)保持一致性(右子节点表示父节点)。。其实没必要,结果都一样 |
-- 作者:蝶影 -- 发布时间:6/11/2007 4:29:00 PM -- 恩,这样说,明白很多,谢谢~ |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
62.500ms |