算法
小与米
一只不懈努力的菜鸟,比较熟悉的语言C/C++,喜欢钻研算法 O(∩_∩)O哈哈~
展开
-
深度与广度 总结
深度与广度 总结1.深度优先搜索(回溯法)[算法思路] 深度优先搜素(DFS,Depth-First Search)是搜素的手段之一.它从某个状态开始,不断地转移状态直到无法转移,然后回退到前一步状态,继续转移到其他状态,如此不断重复,直到找到最终的解.根据深度优先搜索的特点,采用递归函数(隐式地利用了栈进行计算)实现比较简单.[算法描述]void dfs(int s原创 2015-11-27 11:41:50 · 1040 阅读 · 0 评论 -
递推与递归
一、1011数的计算[代码实现]/*解法一 递归 分治*/#include int m=0;int x(int a){ m++; for(;a>0;a--) x(a/2); return 0;}int main(){ int n; scanf("%d",&n); x(n/2); printf("%d",m); return 0原创 2015-11-29 18:00:48 · 441 阅读 · 0 评论 -
进制转换问题
1.十进制转m进制[代码实现]#include#include#include /*STL的栈*/using namespace std;int main(){ stack ans; int n,m; cin>>n>>m; while (n) /*碾转相除法*/ { ans.push(n%m); n/=m; } w原创 2015-11-29 17:00:13 · 266 阅读 · 0 评论 -
最大公约数(辗转相除法)
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个.最大公约数有多种方法,常见的有质因数分解法,短除法,辗转相除法,更相减损法.这里要讲的是辗转相除法。先来看看百度百科上给出的[代码实现]原创 2015-11-28 12:39:39 · 1225 阅读 · 0 评论 -
入门算法思维导图
发现这张图总结的不错就盗来了哈,一步一步的往上爬吧。原创 2015-12-15 16:37:23 · 903 阅读 · 0 评论 -
字符串匹配算法(BF和KMP)
一、BF算法 最简单直观的模式匹配算法是BF(Brute-Fore)算法.[算法思想] 从主串S的第pos个字符起和模式的第一个字符进行比较,若相等,则进行逐个比较后续字符;否则从主串的下一个字符起再重新和模式的字符比较.依次类推,直至模式T中的每个字符依次和主串S中的一个连续的字符序列相等,则匹配成功,函数返回值为和模式T中第一个字符相等的字符在主串S中的序号,否原创 2015-11-28 20:20:00 · 709 阅读 · 0 评论 -
高精度除法(大数除法)
[问题描述]给出两个正整数,计算A÷B的值,保证A和B的位数不超过500位。输入描述输入两个用空格隔开的正整数。输出描述输出A÷B的值。样例输入500 2样例输出250[解题思路]大数除法的实现有两种方式:1:用a-=b,循环,直到a2:模拟现实,我们手算时是怎么算的,程序就怎么写,假设a={2 4 2 3 1},b={2 3},结果ans=原创 2015-12-08 16:53:05 · 897 阅读 · 0 评论 -
【分治策略】最大子数组问题
在分治策略中,我们递归求解一个问题,在每一层递归应用中如下三个步骤: 分解(Divide)步骤将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小。 解决(Conquer)步骤递归地求解出子问题。如果子问题的规模足够小,则停止递归,直接求解。 合并(Combine)步骤将子问题的解组合成原问题的解。一、最大子数组问题 寻找子数组A[low..high]的最大子数原创 2015-12-08 20:30:38 · 430 阅读 · 0 评论 -
【散列表】哈希表
散列表(hash table) 散列表,也叫哈希表,是实现字典操作的一种有效数据结构。尽管最坏情况下,散列表中查找一个元素的时间与链表中查找的时间相同,达到O(n),然而实际应用中,散列查找的性能是极好的。在一些合理的假设下,在散列表中查找一个元素的平均时间是O(1)。是普通数组概念的推广,在散列表中不是直接把关键字key作为数组下标,而是根据关键字计算出相应下标。在构造散列函原创 2015-12-10 13:25:05 · 1109 阅读 · 0 评论