算法设计与分析
「已注销」
这个作者很懒,什么都没留下…
展开
-
union-find算法研究
union-find算法研究union-find 是对图的一些算法的讨论。在我们的讨论中,我们使用整数标识符来作为图的一个触点。术语动态连通性如果 q 和 p 是相连的,那么:自反性:p 和 p 也是相连的对称性:p 和 q 也是相连的传递性:如果 p 和 q 是相连的,而 q 和 r 是相连的,那么 p 和 r 是相连的。数学集合将对象称为触点,将整数对称为连...原创 2018-06-03 17:32:44 · 290 阅读 · 0 评论 -
下压堆栈(链表实现)
下压堆栈(链表实现)这份泛型的Stack实现的基础是链表数据结构。它可以用于创建任意数据类型的栈,并且实现了迭代接口,我们可以通过迭代来变量堆栈中的内容。package com.li.container;import java.util.Iterator;/*下压堆栈(链表实现)*/public class Stack<Item> implements Iter...原创 2018-05-26 20:02:33 · 266 阅读 · 0 评论 -
3-Sum问题
3-Sum问题ThreeSum程序,统计一个文件或者数组里面所有和为0的三整数元组的数量(假设整数不会溢出)。暴力解法一个计时程序此程序用来在进行算法分析时,计算一段程序的运行时间,单位为秒。package com.li.algorithm.analyse;/*算法分析时,计算一段程序的运行时间,单位为秒*/public class StopWatch {...原创 2018-06-02 19:42:05 · 3330 阅读 · 4 评论 -
字符串回环变位
这是算法第四版第一章的一道题,问题如下: 如果字符串s中的字符循环移动任意位置之后能够得到另一字符串t,那么s就被称为t的回环变位。例如,ACTGACG 就是 TGACGAC 的一个回环变位,反之亦然。判定这个条件在基因组序列中的研究是十分重要的。编写一个算法检查两个给定的字符串s和t是否互为回环变位package com.li.chapte1;public class Ci...原创 2018-04-27 22:50:27 · 442 阅读 · 0 评论 -
算法——避免计算机的四舍五入求解方差
算法——避免计算机的四舍五入求解方差问题在《算法》第四版里面,第一章有介绍避免四舍五入产生的误差来求解方差和标准差的算法,如下:public class Accumulator { private int n = 0; // number of data values private double sum = 0.0; // sample ...原创 2018-04-30 23:08:07 · 1216 阅读 · 0 评论 -
牛顿迭代法以及求平方根的应用
牛顿迭代法以及求平方根的应用设 x∗x∗ x^* 是一元非线性方程的根,函数 f(x)f(x)f(x) 在 x∗x∗ x^* 的某领域内连续可微, x∗x∗ x^* 是某个迭代的近似根,且 f′(xk)≠0f′(xk)≠0f'(x_k)\neq0。 f′(xk)f′(xk)f'(x_k)在点 xkxkx_k处进行一阶泰勒展开,可得 f(xk)≈f(xk)+f′(xk)(x−xk)f(xk)...原创 2018-04-11 14:17:54 · 448 阅读 · 0 评论 -
回形数字矩阵(Java)
问题 解决思想(递归) 将矩阵从里到外分为多层,每一层都是一个口字型数字序列,方向都是顺时针,由此我们可以将问题分解为相同的子问题,采用递归算法源代码import java.util.Scanner;/** * * @author Vinsmoke * * * 打印回形矩阵 * * */public class Pattern { static int n;原创 2017-11-23 14:46:44 · 11577 阅读 · 5 评论 -
吸血鬼数(Java实现)
Description吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,而这对数字的位数是原数字的一半位数,并且由组成原数字的各个位数组成,以两个0结尾的数字不是吸血鬼数字。 例如:1260 = 21 * 60 1827 = 21 * 87 2187= 27 * 81 求所有四位吸血鬼数字解决方案一(逆向思维)Analyse 通常思维是枚举所有的四位数来找出所有符合条件的吸原创 2017-11-13 23:32:09 · 1953 阅读 · 5 评论 -
排列算法及组合算法(C++)
元素的排列算法算法分析(递归方式)设R={r1 ,r2, r3,…….., rn}是要进行排列的n个元素,Ri=R-{ri}。集合X中的元素的全排列记为Perm(X)。(ri)Perm(X)表示全排列Perm(X)的每一个排列前加上前缀ri得到的排列。R的全排列可归纳定义如下: 当n=1时,Perm(R)=(r),其中r是集合R中唯一的元素; 当n>1时,Perm(R)由原创 2017-11-07 20:30:59 · 667 阅读 · 0 评论 -
Catalan number(POJ:2084)
Description卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 3535767原创 2017-10-29 23:14:26 · 251 阅读 · 0 评论 -
完全背包问题-动态规划
题目描述 设有N种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从N种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。输入 第一行:两个整数,M(背包容量,M<=200)和N(物品数量,N<=30);第2..N+1行:每行二个整数wi,vi,表示每个物品的重量和价值。输出原创 2017-08-24 11:17:50 · 511 阅读 · 0 评论 -
2-1众数问题
问题描述:给定含有n个元素的多重集合S, 每个元素在S中出现的次数 称为该元素的重数。多重集中重数最大的元素称为众数。 例如,S={1,2,2,2,3,5}。S的众数是2,重数是3。算法设计:对于给定的由n个自然数组成的多重集S,计算S的众数和重数源程序# include <stdio.h># include <malloc.h>int main(){ int N;原创 2017-04-13 14:01:31 · 1110 阅读 · 0 评论 -
4-11删数问题
问题描述:给定n位正整数a,去掉其中任意k<=n个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的的n位正整数a和正整数k,设计一个算法找出剩下的数字组成的新数最小的删数方案。算法设计:对弈给定的正整数a,计算删去k个数字后得到的最小数。数据输入:第一行是a,第二行是k;//4-11删数问题 # include <stdio.h># include <stdlib.h>int原创 2017-03-30 17:24:48 · 690 阅读 · 0 评论 -
4-9 汽车加油问题(贪心算法)
问题描述:一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,编程计算最少加油次数。并证明算法能产生一个最优解。算法设计:对于给定的n和k个加油站的位置,计算最少的加油次数。数据输入:第一行有两个正整数n和k,表示汽车加油后可行驶n km,且旅途中有k个原创 2017-03-27 22:43:04 · 3661 阅读 · 0 评论 -
线性级别的TwoSum和平方级别的ThreeSum
线性级别的TwoSum和平方级别的ThreeSum如果你看到这儿来了,说明你已经了解到线性对数复杂度的ThreeSum算法,或者说,你至少了解过ThreeSum问题。线性级别的TwoSum我们曾使用一层循环和二分查找算法,将TwoSum问题的算法复杂度降到了 N∗lgNN∗lgNN*lgN。现在我们讨论另一种算法,将算法复杂度降到线性级别。对于一开始已经排好序的一列数组,如果我...原创 2018-06-05 11:17:42 · 854 阅读 · 1 评论