• 常见的算法1


    1):枚举法

         枚举法的本质是:从所有的待选答案选出正确的解。

      (1):可预先确定候选答案的数量。

          (2):候选答案在求解之前必须有一个确定的集合。  

            for (i=x1;i <= x2;i ++)

        for (j=y1;j <= y2;j ++)

          for (k=z1;k<= z2;k ++)

            if (i,j,k,满足验证条件)

              printf("输出答案!");

           例子:数字的填写

    (2):递归算法

     本质是:一种直接或间接的调用自身的算法。

      int face(n)

      {

        if (n <= 1)

          return 1;

        else

          return n*face(n-1);

      } 

    (3):分治算法的思想:

         对于一个规模为N的问题,如果这问题可以容易的解决(规模小),则直接解决,否则

     将其分成N个相对较少的问题来解决。这些问题相互独立,并且与原问题形式相同,递归的

    解决这些子问题,再将各个子问题的解合并得到原问题的解。

    (4):贪婪算法的思想:

         从问题的莫个初始解出发逐步逼近给定的目标,以尽可能快地求得更好得解,当达到算法中的末一步不能再继续前进时,就停止算法,给出近似解。

        例子:从问题的初始值出发:

         while 是否达到(或近似达到)设定总目标

            求出可行解的一个解元素;

          由所有解元素组合成问题的一个可行解。

    (5):试探法算法思想

         基本思想:为了求得问题的解,先选择摸一种可能情况进行试探,在试探过程中,一旦发现原来的选择的假设情况是错误的,就退回一步重新选择,继续向前试探,如此反复进行,直至得到解或证明无解。  

        例子:走迷宫

          对解集合中的各解进行试探

             {

            if(满足条件)

            {

               保存结果

               if (完成集合中所有解的试探)

                  输出解

                else

                  重复本过程进行下一步的试探(递归调用本函数)

             }else

                  恢复至上一步保存结果之前的状态,进行另一步试探(递归调用本函数)

          }

    (6):模拟算法:

          使用随机函数来模拟自然界中发生的不可预测情况。C语言中使用srand()函数和rand()函数来生成随机数。srand()函数用来初始化随机数发生器,而rand用来生成随机数。

  • 相关阅读:
    linux查看系统类型和版本
    javascript 中的继承实现, call,apply,prototype,构造函数
    redis原理分析
    HashTable 简述
    算法之 快速排序
    react js 之生命周期
    Java源代码编译过程
    Java字节码文件结构---概述
    Java程序运行时内存划分
    数据结构--汉诺塔--借助栈实现非递归---Java
  • 原文地址:https://www.cnblogs.com/cliuwei/p/4699957.html
Copyright © 2020-2023  润新知