博客专栏  >  编程语言   >  点滴算法

点滴算法

常见算法和数据结构的C/C++实现,分析算法性能

关注
7 已关注
32篇博文
  • 位运算的常见操作和题目

    一、位运算基本操作 &          与            1 & 1 = 1;1 & 0 = 0;0 & 0 = 0  只有当两个位都为1时,结果为1 |   ...

    2015-06-29 21:04
    2095
  • n个骰子的点数

    题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。 方法一:递归 思路:设n个骰子某次投掷点数和为s的出现次数是F(n, s),那么,F(...

    2015-06-26 21:21
    1486
  • KMP(Knuth-Morris-Pratt)算法

    一、朴素匹配算法 也就是暴力匹配算法。设匹配字符串的长度为n,模式串的长度为m,在最坏情况下,朴字符串匹配算法运行时间为O((n - m + 1)m)。如果m = n / 2, 那么该算法的复杂度就...

    2015-06-25 15:40
    1825
  • 字符串的排列/组合

    字符串“abc”的全排列: abc  acb bac bca cba cab 例如字符串“abc”的全排列:以a开头的全排列是a{bc},递归得到bc的全排列,而bc的全排列又是以b开头,c的全排...

    2015-06-21 16:01
    1376
  • 栈和队列的相互模拟

    队列是先进先出的数据结构,栈时先进后出的数据结构,可以使用栈和队列模拟彼此。 两个队列模拟栈 使用C++泛型编程,队列使用STL的queue容器适配器。 主要思想: 两个队列模拟栈时,某时...

    2015-06-18 09:43
    969
  • 不借助变量交换两个数

    交换两个数在排序算法中用的很多:冒泡排序中 、插入排序中等等。正常的交换两个数是借助一个变量tmp: void Swap(int &a, int &b) { int tmp = a; a = b;...

    2015-03-17 15:36
    1302
  • 生成k个小于n的互不相同的随机数

    《编程珠玑》习题1.4:如果认真考虑了习题3,你将会面对生成小于n且没有重复的k个整数的问题。最简单的方法就是使用前k个正整数。这个极端的数据集合将不会明显的改变位图方法的运行时间,但是可能会歪曲系统...

    2015-06-16 16:20
    1308
  • 位操作实现加减乘除四则运算

    常见的位操作实现 1. 常用的一个等式:-n = ~(n - 1) = ~n + 1 2. 获取整数的二进制的最右边的1:n & (-n) 或 n & ~(n - 1)。例如 n = 010100, ...

    2015-01-13 18:48
    3970
  • 整数的二进制表示中1的个数

    给出通常能想到的方式,这两种方式在《C和指针》一书中给出。以下讨论的均为非负整数。 /* 该方法每次在循环中判断数的二进制最右一位是否为1(如果该数能不能被2整除)。 每次循环后该数右移一位。因此遍...

    2015-01-11 21:38
    3452
  • m个苹果放入n个盘子

    题目描述 放苹果问题:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? (注:5,1,1和1,1,5是同一种分法) 解题分析: 设f(m,n) 为m个苹...

    2015-05-05 17:29
    1549
  • 动态规划:计算字符串相似度

    《编程之美》第223页。 题目描述        许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为...

    2015-05-05 17:09
    1313
  • 字符串合并处理(二进制位的倒序)

    描述:  按照指定规则对输入的字符串进行处理。 详细描述: 将输入的两个字符串合并。 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符...

    2015-05-04 20:28
    1515
  • 汽水瓶

    描述:  有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以...

    2015-05-04 16:44
    1112
  • 称砝码问题

    题目描述 有一组砝码,重量互不相等,分别为m1、m2、m3……mn;它们可取的最大数量分别为x1、x2、x3……xn。  现要用这些砝码去称物体的重量,问能称出多少种不同的重量。  Input ...

    2015-05-04 16:25
    2080
  • 最长递增子序列

    一、题目描述 描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。  合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2,...

    2015-05-02 20:40
    1868
  • 动态规划:求最长公共子串/最长公共子序列

    最长公共子序列和最长公共子串区别        最长公共子串(Longest Common Substring)与最长公共子序列(Longest Common Subsequence)的区别: 子串要...

    2015-04-30 11:30
    4843
  • hash函数的基本知识

    Hash函数也称为散列表,是一种常用的数据结构。哈希表优点:可以提供快速插入和查找操作,无论有多少数据项,插入与查找只需接近常量的实际:O(1)时间级。而且编程很容易实现。哈希表的缺点:它是基于数组的...

    2015-04-15 15:06
    2136
  • 动态规划之钢条分割

    长度i     1      2     3  4  5  6     7  8  9  10 价格Pi   1     5     8  9  10  17   17  20  24  30...

    2015-04-07 15:27
    1235
  • avl树的C++实现

    //3avl_tree_c++.h #ifndef AVL_TREE_cplusplus_H #define AVL_TREE_cplusplus_H #include using namespa...

    2015-03-30 11:33
    1102
  • AVL树(Adelson-Velskii-Landis tree)

    AVL树是一个“加上了额外平衡条件”的二叉搜索树。其平衡条件的建立时为了确保树的深度为O(longN)。AVL树要求任何节点左右子树的高度相差不超过1。 插入操作:左-左插入和右-右插入需要单旋转; ...

    2015-03-27 10:34
    1195

img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部