随笔分类 - ACM
摘要:题目描述求一个一维数组arr[i]中的最长递增子序列的长度,如在序列1,-1,2,-3,4,-5,6,-7中,最长递增子序列长度为4,可以是1,2,4,6,也可以是-1,2,4,6。题目分析最长递增子序列(Longest Increasing Subsequence)又叫做最长上升子序列;子序列,正...
阅读全文
摘要:题目描述有两个字符串s1和s2(长度不超过100),求它们的最长公共子序列的长度。例如,s1="abcd";s2="cxbydz"; 最后输出2。题目分析子序列:在给定序列中按照其先后顺序依次取出若干个字符,并将它们排列成一个新的序列,这个序列就被称为给定序列的子序列。最长公共子序列:英文缩写为LC...
阅读全文
摘要:题目描述 求a、b的最小公倍数。 题目分析 求a、b的最小公倍数,即求最小正整数c,使满足c%a=0且c%b=0。 代码实现 最大公约数(GCD) a*b/gcd(a, b)
阅读全文
摘要:题目描述 求整数a、b的最大公约数。 题目分析 所谓求整数a、b的最大公约数,就是求同时满足a%c=0、b%c=0的最大正整数c,即求能够同时整除a和b的最大正整数c。 暴力枚举 若a、b均不为0,则依次遍历不大于a(或b)的所有正整数,依次试验它是否同时满足两式,并在所有满足两式的正整数中挑选最大的那个即为所求; 若a、b其中有一个为0,那么最大公约数即为a、b中非零的那个; 若a、b均为0,则...
阅读全文
摘要:题目描述【题目】给定两个字符串str和match,长度分别为N和M。实现一个算法,如果字符串str中含有字串match,则返回match在str中的开始位置,不含有则返回-1。【举例】str=“acbc”,match=“bc”。返回2。str=“acbc”,match=“bcc”。返回-1。【要求】...
阅读全文
摘要:题目描述给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求换钱有多少种方法。【举例】arr=[5,10,25,1],aim=0。组成0元的方法有1种,就是所有面值的货币都不用。所以返回1。arr=[5,10...
阅读全文
摘要:栈stack 模板类的定义在头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack s1;stack s2;stack 的基本操作有:入栈,如例:s.push(...
阅读全文
摘要:一般传递二维数组的基本规则好像是这样的:可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以可以指定所有维数的大小,也可以省略第一维的大小说明。如:void Func(int array[3][10]);void Func(int array[][10]);二者都是合法而且等价,但是...
阅读全文
摘要:数组C/C++如何传递二维数组?字符串Manacher算法(最长回文子串)KMP算法(字符串匹配)数学相关素数筛法最大公约数(GCD)最小公倍数(LCM)其它技巧STL查找二分搜索算法排序内部排序汇总堆排序快速排序二路归并排序动态规划换钱的方法数(动态规划讲的很好)【面试】求数组元素(右-左)最大差...
阅读全文
摘要:题目描述输出100以内的所有素数。题目分析素数,又叫质数,是只能被1和自身整除的大于1的正整数。首先定义a[i]=1,初始化整个数组,全部初始化为1,第二步双重循环,从2开始,所有2的倍数都标记为0,所有3的倍数也标记为0;然后是4,但因为4已经被标记为0了,跳过;接着是5,直到所有的数都循环过一遍...
阅读全文
摘要:题目描述【题目】给定一个字符串str,返回str中的最长回文子串的长度。【举例】str=“123”。其中的最长回文子串“1”或者“2”或者“3”,所以返回1。str=“abc1234321ab”。其中的最长回文子串“1234321”,所以返回7。【要求】如果str长度为N,时间复杂度为O(N)。题目...
阅读全文
摘要:插入排序直接插入排序/* 直接插入排序 */void insertSort(int a[], int n){ int i,j; for (i=2;i 前后记录位置的增量为dk,不是1 // 2> a[0]只是暂存单元,不是哨兵,当j=1;dk=dk/2) // 步长变化 { for (i=dk+1...
阅读全文
摘要:堆的定义、堆的存储和堆排序堆的定义、堆的存储、堆排序堆排序是一种树形选择排序方法,它的特点是,在排序过程中,将L[1..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(或最小)的元素。堆的定义如下:n个关键字序列L[1..n]称...
阅读全文
摘要:快速排序是基于分治策略的一种排序算法。题目描述使用快速排序对n个元素进行排序。题目分析快速排序是基于分治策略的一种排序算法。其基本思想为通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录进行下一趟排序,以达到整个序列有序。算法实现#i...
阅读全文
摘要:hello 你好放松放松发顺丰的说法都是付水电费水电费的说法适当放松的方式水电费水电费水电费时代发生的付水电费水电费水电费地方发送到水电费水电费算法水电费水电费算法速度付水电费速度付水电费水电费算法水电费水电费水电费沙发上地方是水电费水电费水电费水电费算法算法水电费杀毒分水电费杀毒付水电费算法水电费...
阅读全文
摘要:题目描述给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x。题目分析二分搜索算法(折半查找法)是运用分治策略的典型例子。满足分治法的4个适用条件。很显然此问题分解出的子问题相互独立,即在a[i]的前面或后面查找x是独立的子问题,因此满足分治法的第四个适用条件。算法实现#...
阅读全文

浙公网安备 33010602011771号