
算法分析
文章平均质量分 86
算法设计与分析
天喜Studio
6月份城市(哈尔滨)之星TOP2、C/C++领域新星创作者。
展开
-
【算法设计】回溯法算法设计——骑士游历问题(C++实现)
骑士游历问题问题描述在国际象棋的棋盘(8行×8列)上放置一个马,按照“马走日字”的规则,马要遍历棋盘,即到达棋盘上的每一格,并且每格只到达一次。若给定起始位置(x0,y0),编程探索出一条路径,沿着这条路径马能遍历棋盘上的所有单元格算法思想和解题思路马从棋盘上的某一初始位置(x0,y0)开始,每次选择一个方向k,向前走一格,直到走完64格为止。每走一格,设置数组中相应格的元素值为马走的步数。如果选择的方向k=0,表示可能的8种走向都试探不通,不通的原因是走向超出了棋盘范围,或当前位置已经被原创 2023-11-09 19:59:54 · 1292 阅读 · 1 评论 -
【算法】分治法的应用——快速排序
找到一个基准值x,将序列中小于x的元素放在左侧,将大于x的元素放在右侧,对左右两个子序列分别重复同样的操作,直至子序列的长度为1或0时结束步骤如下:选择基准,一般选择第一个元素作为基准,或者随机选择将数组划分为两个部分,小于等于基准点的元素在左边,大于基准点的元素在右边从数组的第二个元素开始遍历,如果当前元素小于基准,就交换它和第一个元素的位置。这样,所有小于基准的元素都在基准的左边,所有大于基准的元素都在基准的右边。然后对左右两个部分分别进行递归排序快速排序就是先将⼀个元素排好序,原创 2023-09-10 10:45:00 · 335 阅读 · 0 评论 -
【算法】分治法的应用——棋盘覆盖问题
在一个2k×2k个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为特殊方格,且称该棋盘为特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘中无特殊方格。为了将这3个无特殊方格的子棋盘转化为特殊棋盘,可以用一个L型骨牌覆盖这3个较小棋盘的会合处从而将原问题转化为4个较小规模的棋盘覆盖问题。递归地使用这种分割,直至棋盘简化为棋盘1×1原创 2023-09-05 10:15:00 · 3097 阅读 · 0 评论 -
【算法】分治法的基本思想和二分搜索的应用
分治法它的基本思想是将一个大问题分解成若干个与原问题相似的小问题,用相同的方法递归地解决这些小问题,最后将这些小问题的解合并起来,得到原问题的解决方案。分治法所能解决的问题一般具有以下特征:该问题的规模缩小到一定的程度就可以容易地解决。因为问题的计算复杂性一般是随着问题规模的增加而增加,因此大部分问题满足这个特征。该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。这条特征是应用分治法的前提,它也是大多数问题可以满足的,此特征反映了递归思想的应用。利用该问题分解出的子问原创 2023-09-04 16:55:58 · 1029 阅读 · 0 评论 -
【算法】递归的概念、基本思想
递归是将一个问题分解成多个与原问题相似但规模更小的问题来解决,直到问题的规模变得足够小,可以直接求解。每个小问题解决之后,将子问题的解合并起来,最终得到原问题的解。递归分为两个步骤:递推、回归在递推阶段,问题被分解成规模更小的子问题,并递归地求解这些子问题。在回归阶段,子问题的解将被合并为原问题的解。递归总结递归的结构清晰,可读性强递归算法的运行效率较低,占用存储空间大,递归深度过深可能导致栈溢出被调用的局部变量需要分配存储区,保存计算结果原创 2023-09-01 22:33:50 · 4743 阅读 · 0 评论 -
【算法】函数渐近的界基础知识及定理
估计函数的阶的方法:计算极限阶具有传递性对数函数的阶低于幂函数的阶,多项 式函数的阶低于指数函数的阶.5种渐近意义下的符号1.渐近上界——大 O 符号定义:设 f 和 g是定义域为自然数集N上的函数。若存在正数 c 和 n0 ,使得 对一切 n > n0有 0原创 2023-08-31 21:52:46 · 1648 阅读 · 0 评论