yangkeao
V2EX  ›  问与答

线段树 build 出错

  •  
  •   yangkeao · Jul 8, 2014 · 3237 views
    This topic created in 4355 days ago, the information mentioned may be changed or developed.
    https://gist.github.com/VDON/3d976d9a4b96abb1e3d0


    c++

    IDE是Dev-c++
    在执行build第一步的时候就报错。

    实在没看出为什么。。。
    11 replies    2014-07-09 11:24:34 +08:00
    dingyaguang117
        1
    dingyaguang117  
       Jul 8, 2014
    目测你的l,r用的是闭区间吧?
    那么不应该+1吗
    build(cur->lc,l,(l+r)/2);
    build(cur->rc,(l+r)/2 **+1**,r);
    iloahz
        2
    iloahz  
       Jul 8, 2014 via iPhone
    @dingyaguang117 lz那里确实是没想清楚,不过单build来看,如果是表示左闭右开也是说得过去的。
    我总觉得是不是编译错啊,18,19行Node后面不用加括号么…sorry手机无法验证
    yangkeao
        3
    yangkeao  
    OP
       Jul 8, 2014
    @dingyaguang117 左闭右开
    yangkeao
        4
    yangkeao  
    OP
       Jul 8, 2014
    @iloahz 编译没错,单步运行到14行出错
    iloahz
        5
    iloahz  
       Jul 8, 2014 via iPhone
    @yangkeao 哦,你的root指针忘了初始化了,60行后面,new一下
    yangkeao
        6
    yangkeao  
    OP
       Jul 8, 2014
    @iloahz 额,什么意思?
    47jm9ozp
        7
    47jm9ozp  
       Jul 8, 2014
    @yangkeao 60行,

    Node *cur;

    改成 Node *cur = new Node;

    你的cur指针没有初始化,没有为根节点分配内存
    yangkeao
        8
    yangkeao  
    OP
       Jul 8, 2014
    @ooxxcc 哦,我试试
    yangkeao
        9
    yangkeao  
    OP
       Jul 9, 2014
    @ooxxcc build的问题解决了。但是change第三次时,在26行出现问题。
    47jm9ozp
        10
    47jm9ozp  
       Jul 9, 2014
    @yangkeao 代码写的太乱静不下心看……
    yangkeao
        11
    yangkeao  
    OP
       Jul 9, 2014
    @ooxxcc 可是线段树有没有什么好的写法
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   934 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 19:42 · PVG 03:42 · LAX 12:42 · JFK 15:42
    ♥ Do have faith in what you're doing.