zoukankan      html  css  js  c++  java
  • 百度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);        //进栈
             }
          }
    }
  • 相关阅读:
    组合问题的递归实现
    递归解决全排列算法
    字符串专题练习
    Linux系统目录架构
    Linux命令行文本处理工具
    Linux扩展权限
    Linux权限机制
    Linux用户基础
    Linux文件系统挂载管理
    Sensors Grouping Model for Wireless Sensor Network*
  • 原文地址:https://www.cnblogs.com/biyeymyhjob/p/2597208.html
Copyright © 2011-2022 走看看