以下内容均节选自<算法导论>第31章 最大公约数 定义:若:\[\begin{array}{l}a = p_1^{e_1}p_2^{e_2} \ldots p_r^{e_r}\\b = p_1^{f_1}p_2^{f_1} \ldots p_r^{f_r}\end{array}\] 则:\[\gcd( a,b) = p_1^{\min ( e_1,f_1)}p_2^{\min ( e_2,f_2)} \cdots p_r^{\min ( e_r,f_r )}\] GCD递归定理:对任意非负整数…
数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typedef int ElementType; #ifndef _List_H #define _List_H struct Node; typedef struct Node *PtrToNode; typedef PtrToNode List; typedef PtrToNode Position; Li…
1011 最大公约数GCD 基准时间限制:1 秒 空间限制:131072 KB 输入2个正整数A,B,求A与B的最大公约数. Input 2个数A,B,中间用空格隔开.(1<= A,B <= 10^9) Output 输出A与B的最大公约数. Input示例 30 105 Output示例 15 import java.util.Scanner; public class Main { static int gcd(int a,int b){ return a%b==0? b:gcd(b,a%…
1011 最大公约数GCD 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 输入2个正整数A,B,求A与B的最大公约数. Input 2个数A,B,中间用空格隔开.(1<= A,B <= 10^9) Output 输出A与B的最大公约数. Input示例 30 105 Output示例 15 源代码: <span style="font-size:18px;">#include<iostream> #in…
现在我们将要叙述四个算法来求解早先提出的最大子序列和问题. 第一个算法,它只是穷举式地尝试所有的可能.for循环中的循环变量反映了Java中数组从0开始而不是从1开始这样一个事实.还有,本算法并不计算实际的子序列:实际的计算还要添加一些额外的代码. public static int maxSubSum1(int[] a) { int maxSum = 0; for(int i = 0;i<a.length;i++) for(int j = i;j<a.length;j++) { int th…
有几种方法估计一个程序的运行时间.前面的表是凭经验得到的(可以参考:<数据结构与算法分析>读书笔记--要分析的问题) 如果认为两个程序花费大致相同的时间,要确定哪个程序更快的最好方法很可能将它们编码并运行. 一般地,存在几种算法思想,而我们总愿意尽早除去那些不好的算法思想,因此,通常需要分析算法.不仅如此,进行分析的能力常常提供对于设计有效算法的洞察能力.一般说来,分析还能准确地确定瓶颈,这些地方值得仔细编码. 为了简化分析,我们将采纳如下的约定:不存在特定的时间单位.因此,我们抛弃一些前导的…
数学知识复习是<数据结构与算法分析>的第一章引论的第二小节,之所以放在后面,是因为我对数学确实有些恐惧感.不过再怎么恐惧也是要面对的. 一.指数 基本公式: 二.对数 在计算机科学中除非有特别的声明,否则所有的对数都是以2为底的. 定义:XA=B 当且仅当logxB=A. 由该定义可以推出几个方便的等式. 定理1: logaB=logcB/logcA; A,B,C>0,A不等于1 定理2: logAB=logA+logB:A,B大于0 三.级数 最容易记忆的公式: 四.模运算 如果N整除…
最简单的不相交集的实现,来自MAW的<数据结构与算法分析>. 代码: class DisjSet: def __init__(self, NumSets): self.S = [0 for i in range(NumSets+1)] def SetUnion(self, S, Root1, Root2): S[Root2] = Root1 def Find(self, X, S): if S[X] <= 0: return X else: return self.Find(S[X],…
二叉树的插入与删除,来自Mark Allen Weiss的<数据结构与算法分析>. # Definition for a binary tree node class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class BinarySearchTree: # @param root, a tree node # @return a list of integers def…
关于函数对象,百度百科对它是这样定义的: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.又称仿函数. 听起来确实很难懂,通过搜索我找到一篇博客,作者对其是这样的描述: 如果把对象理解成指针的话,也就是说,函数对象其实就是函数指针的概念. 这是该作者通过类比法比较出来的: 我们常说java没有指针,其实java中的对象引用就是指针,有时候我们说一个对象往往指的就是这个对象的引用,也就是说基本上把对象的引用与对象等同了. 在<数据结构与算…