算法设计
文章平均质量分 72
月亮是我抛的硬币,两面都是梦见你
TwcatL_tree
我家二猫爱爬树
展开
-
小波变换和小波阈值法去噪
例如:一个原始信号,经历的时间长度为2秒,采样了2000个点,那么做除法,可得出采样频率为1000hz,由采样定理(做除法)得该信号的最大频率为500hz,那么对该信号做3层的DWT,一阶细节的频段为250-500hz,一阶逼近的频段为小于250hz,二阶细节的频段为125-250hz,逼近的频段为小于125hz,三阶细节的频段约为62.5-125hz,逼近的频段为小于62.5hz。在小波分解中,分解层数的选择也是非常重要的一步。得到的是幅值,a时间的三维图,对应的a值所截得的曲线即为该尺度的小波图形。转载 2023-10-24 16:47:13 · 2329 阅读 · 0 评论 -
ELO等级分制度
近段重温了经典电影《社交网络》,在电影中 ,Facebook创始人马克·扎克伯格在和女友分手后,受到好友爱德华多对核心算法的指引 写下了哈佛女生“选美”网站Facemash,并一气之下黑了学校教务系统,将所有女生的照片放在Facemash上供人评比,网站大获成功,在上线两小时(周末凌晨两点到四点)内点击量达到了2万2千次,挤爆了哈佛的网络。Facemash也被喻为Facebook的原型,而这个网站中所用到的算法就是 ELO等级分制度。原创 2022-11-15 21:59:14 · 1049 阅读 · 0 评论 -
超详细十大经典排序算法总结
0、排序算法说明 0.1 排序的定义 对一序列对象根据某个关键字进行排序。0.2 术语说明 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定 :如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序 :所有排序操作都在内存中完成;外排序 :由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度 : 一个算法执行所耗费的时间。空间复...转载 2021-01-21 21:47:39 · 1090 阅读 · 1 评论 -
均分纸牌(贪心)
【题目描述】有n堆纸牌,编号分别为 1,2,…, n。每堆上有若干张,但纸牌总数必为n的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为1的堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 n 的堆上取的纸牌,只能移到编号为n-1的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。例如 n=4,4堆纸牌数分别为: ① 9 ② 8 ③ 17 ④ 6移动3次可达到目的:从 ③ 取4张牌放到④(9 8 13 10)原创 2020-08-27 22:36:00 · 279 阅读 · 0 评论 -
洛谷P1317 低洼地
P1317 低洼地题目描述一组数,分别表示地平线的高度变化。高度值为整数,相邻高度用直线连接。找出并统计有多少个可能积水的低洼地?如图:地高变化为 0 1 0 2 1 2 0 0 2 0输入两行,第一行n,表示有n个数。第2行连续n个数表示地平线高度变化的数据,保证首尾为0。(3<=n<=10000,0<=高度<=1000)输出一个数,可能积水低洼地的数目。样例输入 Copy100 1 0 2 1 2 0 0 2 0 样例输出 Copy3 思路原创 2020-08-27 21:37:18 · 646 阅读 · 0 评论 -
LibreOJ10011 愤怒的牛 二分
题目链接题目描述原题来自:USACO 2005 Feb. Gold农夫约翰建造了一座有 n 间牛舍的小屋,牛舍排在一条直线上,第 i 间牛舍在 xi 的位置,但是约翰的 m 头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其它牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。牛们并不喜欢这种布局,而且几头牛放在一个隔间里,它们就要发生争斗。为了不让牛互相伤害。John 决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离原创 2020-08-27 21:15:34 · 204 阅读 · 0 评论 -
STL小结
STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list, vector,set,map等,STL也是算法和其它一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最先开发,它是与C++几乎同...原创 2020-07-01 10:47:09 · 1102 阅读 · 0 评论 -
一套图 搞懂“时间复杂度”
正文: 时间复杂度的意义 究竟什么是时间复杂度呢?让我们来想象一个场景:某一天,小灰和大黄同时加入了一个公司......一天过后,小灰和大黄各自交付了代码,两端代码实现的功能都差不多。大黄的代码运行一次要花100毫秒,内存占用5MB。小灰的代码运行一次要花100秒,内存占用500MB。于是......由此可见,衡量代码的好坏,包括两个非常重要的指标:1.运行时间;2.占用空间。 基本操作执行次数 关于代码的原创 2020-06-19 23:41:59 · 236 阅读 · 0 评论 -
算法__子集和问题
子集和问题就是 给出一个数组arr和一个值sum 输出满足和为sum的arr的子集子集和问题 从某种程度上来说 其实就是 01背包问题的 子问题 还是取一种情况 不取是另外一种情况 然后 用回溯法 构建出一棵树来遍历一下#include <iostream>#include <cstring> using namespace std; cons...原创 2020-04-13 20:19:02 · 1846 阅读 · 0 评论 -
算法__流水作业调度问题
1、问题描述: n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后...原创 2020-04-13 20:15:32 · 3678 阅读 · 0 评论 -
算法__旅行商问题
1.问题定义 TSP问题(旅行商问题)是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次然后回到出发城市,并要求所走的路程最短。 假设现在有四个城市,0,1,2,3,他们之间的代价...原创 2020-04-13 20:11:10 · 5685 阅读 · 1 评论 -
算法__N皇后算法
问题描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…", // 解法 1“…Q”,“Q…”,...原创 2020-04-13 20:04:29 · 411 阅读 · 0 评论 -
算法__数字三角形
#include<iostream>using namespace std;int main(){ int n,i,j,a[101][101]; cin>>n; for (i=1;i<=n;i++) for (j=1;j<=i;j++) cin>>a[i][j]; ...原创 2020-03-10 18:42:21 · 272 阅读 · 0 评论 -
欧几里德算法——辗转相除法求两个自然数 m 和 n 的最大公约数
算法思想(来自百度知道):首先给定两个数a,b(a>b),则根据除法运算,a/b=q…r。q是商,r是余数。也可以表示为a=bq+r。这是小学就知道的。下面给出一个定理:若a=bq+r,则(a,b)=(b,r),即a,b的最大公约数等于b,r的最大公约数。举个例子来说:24=10*2+4,那么(24,10)=(10,4)=2这个定理的证明也很简单。设c是a和b的任意一个公约数,...原创 2020-03-09 20:50:57 · 3489 阅读 · 1 评论 -
递归算法
对于很多编程初学者来说,递归算法是学习语言的最大障碍之一。很多人也是半懂不懂,结果学到很深的境地也会因为自己基础不好,导致发展太慢。可能也有一大部分人知道递归,也能看的懂递归,但在实际做题过程中,却不知道怎么使用。今天,我们就来说一说递归算法的使用。什么是递归递归,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。也就是说,递归算法是一种直接或者间接调用自身函数或者方法的算法。通俗来说,...原创 2019-11-13 17:34:32 · 337 阅读 · 0 评论 -
辗转相除法__约分
#include<iostream>using namespace std;int main(){ int temp1; int temp2; cin>>temp1>>temp2; int a=temp1; int b=temp2; while(b!=0) { ...原创 2019-11-12 23:09:58 · 1277 阅读 · 0 评论 -
冒泡排序
冒泡排序1.冒泡排序思想让数组当中相邻的两个数进行比较,数组当中比较小的数值向下沉,数值比较大的向上浮!外层for循环控制循环次数...转载 2019-11-06 19:56:41 · 148 阅读 · 0 评论 -
5.算法设计与分析__回溯算法
回溯算法1 回溯算法的理论基础1.1 问题的解空间1.2 回溯法的基本思想1.3 子集树与排列树2 装载问题3 0-1背包问题4 图的m着色问题[5 n皇后问题](https://blog.csdn.net/qq_15719613/article/details/105496260)[6 旅行商问题](https://blog.csdn.net/qq_15719613/article/detail...原创 2020-04-13 20:19:29 · 753 阅读 · 0 评论 -
4.算法设计与分析__动态规划
一、动态规划的基本思想动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多...原创 2020-04-12 12:50:44 · 695 阅读 · 0 评论 -
3.算法设计与分析__分治法
1 概 述1.1 分治法的设计思想将一个难以直接解决的大问题,划分成一些规模较小的子问题,以便各个击破,分而治之。更一般地说,将要求解的原问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止,再将子问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解...原创 2020-04-10 20:15:23 · 662 阅读 · 0 评论 -
2.算法设计与分析__递归与分治策略
与递归分治策略任何一个可以用计算机求解的问题所需的计算时间都与其规模n有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。如果原问题可分割成k个子问题(1<k≤n),且这些子问题都可解,并可利用这些子问题的解求出原问题的解,那么这种分治法就是可行的。由分治法产生的子问题往往是原...原创 2020-03-18 17:31:13 · 810 阅读 · 0 评论 -
1.算法设计与分析__递推算法
递推算法递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法。这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。无论顺推还是逆推,其关键是要找到递推式。这种处理问题的方法能使复杂运算化为若干步重复...原创 2020-03-13 21:33:03 · 834 阅读 · 0 评论 -
0.算法设计与分析__绪论
算法及其重要特性算法(Algorithm):对特定问题求解步骤的一种描述,是指令的有限序列。算法的五大特性:⑴ 输入:一个算法有零个或多个输入。⑵ 输出:一个算法有一个或多个输出。⑶ 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。⑷ 确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。⑸ 可行性:算法描述的操作可以通过已经实现的基...原创 2020-03-09 20:58:46 · 241 阅读 · 0 评论