算法
Explosion_M
最好的简介就是没(尽)有(情)简(想)介(像)
展开
-
【算法】字符串编辑距离——动态规划
概念理解对于A,B两字符串,定义三个基本操作分别为插入一个字符删除一个字符修改一个字符通过有限的进行上述三个基本操作,最终使A,B两个字符串完全一致,所进行的基本操作的次数成为两个字符之间的编辑距离问题:给出A,B两个字符串,计算两者之间的最小编辑距离解法:对于两个字符串A—“aafojeaw”B—“weafojfawe”如果我们想要让两个字符串变得相同,那我们就需要从头开始一个一个对比两个字符串的字符,为了更清楚地记录这个过程,我们建立一张二维表首先对于空字符串的编辑距离原创 2020-10-09 17:55:20 · 468 阅读 · 0 评论 -
【算法】快速幂取模
快速幂做算法的时候可能会经常遇见对某个数进行指数运算,最简单的就是使用一个循环来解决int num = 2;int answer = 1;for(int i = 0; i < n; i++) //求2^n{ answer *= num;}更简单粗暴的莫过于double answer = power(num, n);但是指数运算是爆炸增长的,当我们的底数和指数足够大的时候,要么发生溢出,要么耗费很长时间对于溢出的问题我们可以通过取模来解决,实际上对于很大的幂运算我们都会要求对最原创 2020-10-08 16:15:24 · 206 阅读 · 0 评论 -
排序算法——选择排序
选择排序选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。基本实现代码for (int i = 0; i < n - 1; i+...原创 2019-12-05 22:20:41 · 131 阅读 · 0 评论 -
母牛的故事——C1004(递归与迭代)
题目描述有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。输出对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。测试样例输入24...原创 2019-11-21 16:46:58 · 2796 阅读 · 0 评论 -
汉诺塔——递归的典型应用
有一个很著名的问题叫汉诺塔问题相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。这...原创 2019-11-21 13:59:26 · 557 阅读 · 0 评论 -
排序算法——冒泡排序
冒泡排序是一种非常容易理解也十分简单的排序方法其原理为:依次比较相邻两元素的大小,若后一个元素小于前一个元素,则交换两者位置(升序),直到最后一个元素为最大元素,然后从首元素再次重复相同步骤,直到全部排序完毕时间复杂度O(n2)代码实现最简单的写法是下面这种void bubbleSort(int []num){ for (int i = 0; i < num.length...原创 2019-11-20 21:05:33 · 156 阅读 · 0 评论 -
羊车门——概率论理解与程序检验
羊车门问题有三扇关闭的门,一扇门后面停着汽车,其余的门后面是羊????,只有主持人知道每扇门的后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。请问:参赛者更换选择后能否增加猜中汽车的机会?这是一道概率论的问题虽然学过概率论,但是已经很久没有使用过了,我这里就仅凭着自己残存的一点知试来尝试解答一下吧。首先参赛者可以做两次选择,每...原创 2019-11-13 17:36:58 · 1442 阅读 · 3 评论 -
辗转相除法
我们经常会碰到取两数最大公约数的情况,通常情况下我们一般都会采用从较小值开始,逐渐递减并检验的方法,直到找到可以同时整除两个数的值,从而找到最大公约数,其算法实现为int temp = min_num;while(true){ if(min_num % temp == 0 && max_num % temp == 0) { break; } temp--;}/...原创 2019-11-13 12:30:32 · 167 阅读 · 0 评论 -
数据结构初体验——笔记整理#3 队列
队列队列的顺序实现typedef int Positionstruct QNode{ ElementType *Data; Position front,rear; int MaxSize;};typedef struct QNode *Queue;Queue CreateQueue(int MaxSize)//初始化一个队列{ Queue q...原创 2019-11-03 16:44:09 · 162 阅读 · 0 评论 -
算法之二分查找
二分查找原理二分查找适用于按顺序排列的线性表,首先选取表中间位置,将其分为两个子表,将中间位置的值与指定查找的值相比较,相等则查找成功并返回,若小于指定的值,则取其右(左)子表,若大于指定的值,则取其左(右)子表,重复上述步骤,直到找到指定的值或查找失败int binarySearch(int value,int num[],int length){ int right,left,...原创 2019-11-02 11:43:12 · 110 阅读 · 0 评论