• 百度2010校招算法题之编译模块


    算法设计

    某大型项目由n个组件N1,
    N2……Nn构成,每个组件都可以独立编译,但是某些组件的编译依赖于其它组件(即某些组件只能在其它组件编译完成后才能编译),设计算法给出统计过程。

     思路:拓扑排序算法

    语言伪代码:

    (1)初始化栈S
    (2)找出所有可执行的组件w,w进栈
    (3)while(栈S非空)
           v=栈顶元素出栈;
           if(v未被编译) 
                  编译v,并且输出v;
           foreach(更新与v相关的组件依赖参数)
                 if(x=组件可被编译) 
                      x进栈;

    C伪码:

    void compileModel(Model *model)
    {
         Model *w,*v;
         Initial(Stack);
    
         while(i<n)
            if(model[i].depend==0)         //其所依赖模块数为0
                 push(stack,model[i]);     //进栈
    
        while(!Stack.empty())             
         {
            v=pop(Stack);
            if(v not copmpiled)
               compile(v),printf(v);    //编译模块并输出结果
            while(v.related model w)      //取出依赖v的模块w
            {
               renew(w);                  //更新模块w参数,使其依赖的模块数目减一
               if(w.depend==0)            //所依赖模块数目为0
                    push(stack,w);        //进栈
             }
          }
    }
  • 相关阅读:
    虚拟机添加新磁盘挂载,导致以前的文件丢失解决办法
    python实现tab键自动补全
    设计模式
    js 深浅拷贝 笔记总结
    js 闭包
    flex 布局
    vue2.0 之 生命周期
    移动端适配 rem
    vue 之 双向绑定原理
    vue2.0 之 过渡动画transtion
  • 原文地址:https://www.cnblogs.com/biyeymyhjob/p/2597208.html
Copyright © 2020-2023  润新知