随笔分类 - 数据结构及算法
摘要:转自:http://dreamrunner.org/blog/2014/08/07/C-multithreading-programming/ Overview 随着多核 CPU 随处可见,多线程(multithreading)可以被用来实现并行,提高 CPU 的利用率和性能显著的提高.掌握多线程编
阅读全文
摘要:在全文检索中,分词处理对性能的影响很大,包括索引大小、检索速度、准确度等方面。 一个好的分词处理应该具备哪些特性呢? 1)速度、准确度 2)自定义词典 3)对英文、数字符号、日期、繁简转换等的优化 中文分词算法大概分为两大类 1、字符串匹配(基于词典) 这一算法其实就是使用字典,与字典中的词想匹配,
阅读全文
摘要:1、概述 KMP算法是一种改进的字符串匹配算法,关键在于利用匹配失败后的信息,尽量减少模式串与主串的次数。 2、算法原理 举个简单的例子:主串为“BBC ABCDAB ABCDABCDABDE”,匹配串为“ABCDABD” 通常我们比较字符串,从头开始,第一个字符不匹配时,向后移匹配串。 当匹配串与
阅读全文
摘要:1、概述 Trie树( /tri:/ ),又称前缀树、字典树,是种快速检索的多叉树结构, Trie树的基本性质可以归纳为: (1)根节点不包含字符,除根节点意外每个节点只包含一个字符。 (2)从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。 (3)每个节点的所有子节点包含的字符
阅读全文
摘要:今天好兄弟说要买小米6,让我帮忙写个小程序在16个数中找出6个相加和为6666的数。 作为一个有素养的算法工程师,第一想到的自然是夹逼,不过6个数的夹逼有些难写。 看了看题目,觉得脑算也不过1分钟啊,明显3个最大的都要选,剩483,选两个尾数是9,一个位数是5的,试着选125和75,最后得出 195
阅读全文
摘要:最近人工智能做个小实验,组队选了个数独游戏,顺便研究了一下。解数独感觉主流思想也就是深搜回溯了吧,优化就是各种剪枝方法。 1 引言 数独起源于18世纪初瑞士数学家欧拉等人研究的拉丁方阵(Latin Square),曾风靡日本和英国。现有解法包括基础解法:摒除法,余数法,进阶解法:区块摒除法(Lock
阅读全文
摘要:题目要求:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 首先很容易想到位运算
阅读全文
摘要:题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。写了两种
阅读全文
摘要:斐波那契数列: F(n) = {n n<=2; {F(n-1)+F(n-2) n>2; 所以每个|F(n),F(n-1) |=|F(n-1),F(n-2)|*{{1,1},{1,0}} = |F(2),F(1)|*({{1,1},{1,0}})^(n-2) 此时为时间复杂度为O(N); 设a 为矩阵
阅读全文
摘要:时间复杂度为O(nlogn)的堆排序,是种不稳定的排序。原理为将数组想象为一棵二叉树,将子节点与父节点比较大小并交换。 举例:序列编号为 0 1 2 3 4 5 6 7 值为 4 5 1 6 2 7 3 8 编号化为树结构为: 0 1 2 3 4 5 6 7 7的父节点为3((7-1)/2),实际上
阅读全文
摘要:算法核心部分就是 n = n & (n - 1);着行代码可以吧n的最后一位1变成0,负数用补码表示同样可以。举个例子:二进制数n 为 1100,n-1 = 1011n&n-1 = 1000 n的第三位是1,运算后变成了0;如果n为负数同样,第一位为符号位,设n = 11000n = n&(n-1)
阅读全文
摘要:算法课上老师留的作业,最长公共子序列LCS(Longest Common Subsequence)问题,首先看到这个问题感觉有点复杂,和最长公共子串不同,公共子序列并不要求元素相邻,看起来只有穷举才能将所有可能全部罗列,但是伟大的数学家早已为此提供了更优的解决方案——动态规划。 一、问题描述与分析
阅读全文

浙公网安备 33010602011771号