算法设计
当时明月在,曾照彩云归。
Missヾaurora
想将岁月凝结成诗,却没想过,有一天,这诗也会渐渐老去,以致后来,无人问津。
展开
-
计算a^b%m(快速幂)
给定三个正整数a、b、m(a<10^9, b<10^18, 1<m<10^9),求 a^b%m。原创 2021-05-12 20:31:14 · 783 阅读 · 0 评论 -
分治法的应用----求一个序列中第K大或第K小的数
思想借助快速排序的划分思想,如果是求第K小的数,则一次划分所得到的基准元素的位置pivot即为第pivot+1小的数(数组下标从0开始)。将其和K进行比较,如果等于K,则输出元素即可,否则如果小于K,则说明第K小的值在其右边,应往右子序列递归查找,如果大于K,则说明在其左边,应往左子序列递归。如果要求第K大的数,则应从右往左数,定义pos=right-pivot+1,得到的为第pos大的数,然后将该值与K比较,若大于K,则往pivot右边子序列递归查找,否则往左边子序列递归查找。需要注意的是,在往左边原创 2021-04-23 20:27:07 · 1202 阅读 · 0 评论 -
全排列问题详解【递归实现】
描述给定一个正整数n,输出1~n的全排列分析1首先,根据递归的思想,我们可以把求1~n的全排列这个大问题分解为先固定1,求剩下的n-1个数的全排列,在固定2,固定3……依次类推。而对于剩下的这n-1个数,同样采用这种方法,取里面的第一个数,放到当前排列的第一个位置,再取第二个数放到第一个位置……即:对于1,2,3,4……n,这n个数,分别求1,2,3,……,n 2,3,……,n 3,……,n ……原创 2021-03-16 15:59:52 · 7850 阅读 · 2 评论 -
贪心法
贪心贪心法在求解问题时其基本思路是总是做出在当前看来是最好的选择,即它不从整体最优上加以考虑,仅考虑局部最优。贪心选择的性质核心是将所求问题的整体最优解可以通过一系列局部最优的选择来达到。仅在当前状态下做出最好的选择,即局部最优选择,然后再取求解做出基于这个选择之后产生的相应子问题的解。因此要得到最后的整体最优,就需要证明所做的每一步贪心选择都是最终导致产生整体最优解。通常采用反证法或数学归纳法。典型应用区间选择问题:https://blog.csdn.net/qq_43643944/arti原创 2021-03-26 21:34:04 · 70 阅读 · 0 评论 -
区间选择问题
描述给定N个开区间(a,b),从中选择尽可能多的开区间,使得这些开区间两两没有交集。如(1,3)、(2,4),(3,5),(6,7),最多可以选择三个不相交的区间,(1,3),(3,5),(6,7)。分析1首先,我们采用暴力破解的方法,即对所有的开区间进行穷举,首先先择第一个开区间加入最优解,然后在他基础上,再从剩下的区间里选择可以加入的,直至选择完。记录区间个数并保存区间。然后再选择第二个区间……依次类推。#include <iostream>#include<algo原创 2021-03-26 21:32:30 · 656 阅读 · 0 评论 -
【回溯算法】
回溯法一、解空间树给定一个复杂问题,其解决方案由若干个小的决策步骤组成的决策序列,所以问题的解可以表示为解向量X=(x1,x2,……,xn),每个x可取多个值,这样X的所有可能的取值便构成了问题的解空间,又称为解空间树。每个X便为问题可能的解。二、回溯法回溯法的核心思想是基于深度优先搜素,对问题的解空间树进行遍历,即从根节点出发,试图向下扩展,直到叶子节点,然后进行回溯,试图继续扩展下一个结点,直到遍历完整个解空间树。其从根节点到叶子结点的扩展路径便构成了问题的一组可能的解。不过其与深度优先搜原创 2021-03-22 21:27:42 · 173 阅读 · 0 评论 -
【货箱装载问题】回溯法应用
问题描述将n个集装箱装上载重量为W的轮船,每个集装箱i的重量为wi,要求从这些集装箱中选出若干个集装箱,使其装载量达到最大但不超过W。分析很明显这是一个求最优解的问题,即在这n个集装箱所构成的解空间树中选择出最优的解决方案。首先从第i个箱子开始,以此为根节点使用DFS向下扩展,即试图将当前这个箱子纳入可行解当中,然后装第i+1个箱子,直到箱子数量达到n,即产生了一组可行解。将其与上一组解进行比较,选择最优。在扩展过程中,加上约束条件,判断当前已装入的重量加上剩余箱子的重量是否能超过已经产生的最优原创 2021-03-22 21:27:03 · 782 阅读 · 0 评论 -
递归算法及其应用
递归递归指一个函数直接或间接的调用自己。使用递归算法求解的特征是一个大的问题可以划分为若干个子问题,而这些子问题又同原问题有相同的求解方法,于是便又可以将它们继续划分,直到子问题结构简单易于求解为止。最后再进行回退,将各个子问题的解逐步合并,最后求得原问题的解。...原创 2021-03-16 16:02:22 · 338 阅读 · 0 评论