算法
柠檬有点酸
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
opencv旋转矩形矫正
// 仿射变换矫正.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束 #include "pch.h" #include <iostream> #include <opencv2/opencv.hpp> #include <math.h>//引用函数文件库 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" using namespace.原创 2022-05-12 15:05:22 · 1067 阅读 · 0 评论 -
kmp算法(查找字符串在长字符串中首次出现的位置)
kmp查找关键的地方首先是在next数组的创建 next数组创建:abababac为例 next数组第一位str[0]为next[0]=0,str[1]和str[0]不相同所以也为next[1]=0,str[2]动态规划先和str[1]比较,不相同,则比较str[1-1],相同故next[2]=1,str[3]和str[next[1]+1]比较相等则next[3]=next[2]+1=2,st...原创 2019-03-17 00:23:49 · 1435 阅读 · 0 评论 -
面试过程中的一些算法题
废话不多说,直接开始 1.如何找到数组中出现次数超过一半的数 第一种方法是可以定义一个计数数组,遍历一次数组就能得到数组中出现元素的次数,然后在计数数组中找到次数大于N/2的元素。 第二种方法使用快速排序,因为出现次数超过一半的元素肯定就在中位数上,这个中位数可不是数学里面的中位数,奇数个元素的是中间位置的数,偶数个元素的时候,就是N/2个位置或者N/2+1位置上的数,因为两个数字是相等的,...原创 2019-03-23 12:20:27 · 211 阅读 · 0 评论 -
把数字翻译成字符串
题目 给定一个数字,按照如下规则翻译成字符串: 0->a 1->b ... 25->z 因此一个数字可能有多种翻译。例如,12258有5种不同的翻译,bccfi,bwfi,bczi,mcfi,mzi。 请实现一个函数,计算数字有多少种翻译方法。 思路 可以用递归解决,会发现子问题258 58都重复了。 自然想到可以用动态规划来解决,用f(i)来表示从第i位...转载 2019-03-23 15:00:11 · 267 阅读 · 0 评论 -
数组中的逆序对
题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 方案一,将数组内的数字依次作比较,如果是逆序对则计数,但是这样的时间复杂度比较高,O(N^2), 方案二,将数组二分直至分成每个数组中都含有至多两个元素,分别计算其中的逆序对例如下图中的...原创 2019-03-23 16:29:25 · 256 阅读 · 0 评论 -
迪节特斯拉最短路径算法
最短路径求取依靠的是邻接矩阵 从点1出发 依次到其他各点的距离是 无穷大代表无法到达,其中1->2的距离最短 然后查看2到达各点的距离 发现2->4距离为3然后更新1点到各点的距离 依次是0、1、12、1+3、无穷、无穷 然后查点4到达其余个点的距离 然后 其到3点的距离为4,因为1+3+4<12故更新0、1、1+3+4、1+3、无穷、无穷 观察点...原创 2019-06-25 23:42:45 · 1011 阅读 · 0 评论 -
排序算法总结
一、直接插入排序、冒泡排序和简单选择排序是最基本的排序方法,它们主要用于元素个数n(n<10000)不是很大的情形。 它们的平均复杂度均为O(n^2),实现也比较简单。 1、直接插入排序对于规模很小的元素序列(n<=25)非常有效。它的时间复杂度与待排序元素序列的初始排列有关。在最好情况下,直接插入排序只需要n-1次比较就可以完成,而且不需要交换操作。在平均情况下和最差情况下,直接...原创 2019-08-02 17:01:05 · 1363 阅读 · 0 评论 -
排序算法代码实现
直接插入排序 template<class T> void InsertSort(T* array, int n) { //array待排序数组,n:数组元素数量 int i, j; //循环变量 T temp; ...原创 2019-08-02 17:22:39 · 166 阅读 · 0 评论 -
C++全排列问题
将每一个位置的元素都和其他位置的元素交换 最后输出 就完成全排列的功能,这里调用递归的方法,代码如下 #include <iostream> #include <cstring> #define N 100 using namespace std; void permutation(char* a, int k, int m) { int i, j; ...原创 2019-08-06 14:05:42 · 511 阅读 · 0 评论 -
合并集合
下边是ac代码 #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int n,m; while(cin>>n>>m) { vector<int> a; int p,...原创 2019-08-16 10:37:13 · 209 阅读 · 0 评论
分享