算法
智能云
这个作者很懒,什么都没留下…
展开
-
算法设计——并查集
【蓝桥杯】 历届试题 合根植物问题描述 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入格式 第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。 接下来一行,一个整数k,表示下面还有k行数据(0<k<原创 2021-01-10 22:27:33 · 138 阅读 · 0 评论 -
深度搜索算法
深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。搜索与回溯是计算机解题中常用的算法,很多问题无法根据某种确定的计算法则来求解,可以利用搜索与回溯的技术求解。回溯是搜索算原创 2021-01-03 23:26:16 · 2424 阅读 · 0 评论 -
回溯算法框架
算法简介回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。回溯法:有通用解题法 之称,可以系统的搜索一个问题的所有解和任一解,是一个既带有系统性,又带有跳跃性的搜索算法。算法基本思想:确定解空间后从开始节点出发,以深度优先的方式搜索整个解空间。如果当前扩展结点不能再向纵深方向移动,当前节点为死节点。此时,应该往原创 2020-12-17 22:51:59 · 140 阅读 · 0 评论 -
神经网络算法
神经网络介绍神经网络是机器学习中的一种模型,是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。一般来说,神经网络的架构可以分为三类:前馈神经网络:这是实际应用中最常见的神经网络类型。第一层是输入,最后一层是输出。如果有多个隐藏层,我们称之为“深度”神经网络。他们计算出一系列改变样本相似性的变换。各层神经元的活动是前一层活动的非线性函数。循环网络:循环网络在他们的连接图中定向了循环,这意原创 2020-12-11 22:43:52 · 572 阅读 · 0 评论 -
多分支递归算法
Fibonacci数列无穷数列1,1,2,3,5,8,13,21,34,55,……,称为Fibonacci数列。它可以递归地定义为:int fibonacci(int n) { if (n <= 1) return 1; return fibonacci(n-1)+fibonacci(n-2); }2.有n级台阶,可以一步上一个台阶,也可以一步上两个台阶,编写程序,计算一共有多少种不同的走法。其实就是一个整数可以拆成多少种1和2的相加例如:5=.原创 2020-11-22 22:58:25 · 588 阅读 · 0 评论 -
高效判断素数算法(6倍原理)
这是个trivial的素数分布特征,因模6的余数中只有1和5与6互素,故从5开始的素数必与6的倍数相邻bool isprime(int num) { if (num == 2 || num == 3) { return true; } //如果不在6的倍数附近,肯定不是素数 if (num % 6 != 1 && num % 6 != 5) { return false; } //对6倍数附近的数进行判断 for (int i = 5; i <= sqrt(原创 2020-11-20 22:05:45 · 5093 阅读 · 4 评论 -
递推转矩阵快速求幂算法
例:给定数列1,1,1,1,3,5,9,17,···,从第4项开始,每项都是前3项的和。求第20202020项的最后4位数是多少。本问题的思路是将数列的求项问题转化为矩阵求幂问题#include<iostream>#include<ctime>using namespace std;int base[3][3] = { 0,1,0, 0,0,1, 1,1,1 }; //底数矩阵int res[3][3] = { 1,0,0 ,0,1,0 ,0,0,1 }; //结果矩原创 2020-11-13 23:20:48 · 177 阅读 · 0 评论 -
比赛名单
有两队选手每队5人进行一对一的比赛,甲队为A、B、C、D、E,乙队为J、K、L、M、N,经过抽签决定比赛对手名单。规定A不和J比赛, M不和D及E比赛。列出所有可能的比赛名单。源程序:#include<iostream>#include<algorithm>#include<map>#include<cstring>using namespace std;int main(){ char m[5] = { 'A','B','C','D','E原创 2020-11-11 23:34:49 · 321 阅读 · 0 评论 -
最大子段和问题
最大子段和问题。给定由n个整数组成的序列,求序列中子段的最大和,若所有整数均为负整数时定义最大子段和为0。 例如, 当(a1,a2,a3,a4 ,a5,a6) = (-2,11,-4,13,-5,-2)时,最大子段和为: a2+a3+a4=20输入格式:第一行输入整数个数n(1≤n≤10000),再依次输入n个整数。输出格式:输出第一行为最大子段和,第二行为子段第一个数和最后一个数在整个序列中的位序。输入样例1:6-2 11 -4 13 -5 -2输出样例1:202 4源程序:原创 2020-11-11 22:35:07 · 617 阅读 · 0 评论 -
C++ 标准模板库STL
1.STL简介STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。STL 是 C++ 标准库的一部分,不用单独安装。C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。2.STL容器简单的理解容器,它就是一些模板类的原创 2020-11-09 22:56:52 · 251 阅读 · 0 评论