牛客网刷题总结—Day2

1.贪心算法

  贪心算法总是基于当前的情况去寻找一个最优解,即局部的最优解———贪心算法策略能够成功的关键在于——局部的最优解能够导致全体的最优解

  思路:  

    利用数学模型来描述问题

    将求解问题化为若干子问题

    对每一子问题求得最优解

    将子问题的最优解合成原问题的解

  例子:N个整数的某种组合成为最大值——n = 3时,3个整数13,312,343,按照每次取最大连成的最大整数为34331213。

     然而12 121 应为 12112 实际上 12121更大,贪心算法失效

     实际上是贪心的选取策略有问题,应该选取前缀最大的作为首位数字

     这里考虑把数字转化为字符串进行处理,比较两个字符串的大小(靠string内部的判等器可以实现前缀的比较)

  将连通网中生成树(连通子图)中确定边代价和最小的树为最小生成树。

  最小生成树的Kruskal算法和Prim算法都是贪心算法。其算法实现参考http://blog.csdn.net/luoshixian099/article/details/51908175

 2.解析XML时,需要校验节点是否闭合,如必须有与之对应,用——栈——数据结构实现比较好

  这是因为解析时需要进行符号匹配,所以采用栈结构来判等。

  栈结构的应用有:

      符号匹配;

      后缀表达式求值/中缀表达式求值(逆波兰表达式);

       

    

     

     

     

猜你喜欢

转载自www.cnblogs.com/exhina/p/12385935.html