算法总结
文章平均质量分 76
wang_dong001
这个作者很懒,什么都没留下…
展开
-
由一道腾讯面试题引发的关于递归函数使用的各种情况总结
一直有一个感受就是,当我们在某些问题抽象的定义解答时候感到疑惑是,不妨看一下具体问题的解答,更加有助于我们理解问题。首先看一下腾讯的一道招聘的测试题。 1、面试题是一道程序编程题,要求使用递归的方法生成一个N位长度的格雷码,对格雷骂的定义是,相邻的两个格雷码只有一位的数字有差别。首先看一看我写的关于该题目的C程序代码:#include "stdio.h"#include"std原创 2015-09-08 10:47:34 · 1654 阅读 · 0 评论 -
名字的漂亮度问题求解——华为OJ题目
一、问题描述给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。输入:整数N,后续N个名字N个字符串,每个表示一个名字输出:每个名称可能的最大漂亮程度二、解题思路 由于该题是原创 2016-12-09 11:33:15 · 805 阅读 · 0 评论 -
公共字符串长度问题求解——华为OJ题目
一、问题描述以下是题目的描述题目标题:计算两个字符串的最大公共字串的长度,字符不区分大小写详细描述:接口说明原型:int getCommonStrLength(char * pFirstStr, char * pSecondStr);输入参数: char * pFirstStr //第一个字符串 char * pSecondStr//第二个字原创 2016-12-09 11:04:42 · 443 阅读 · 0 评论 -
华为OJ上挑7的练习题解决过程
挑7练习题的介绍,输入一个整数N,给定了整数N范围是1到30000,要求统计出从1到N范围内所有与7相关数字的个数,与7相关的数字定义为,是7的倍数或者数字中含有7,比如17和71均含有‘7’。 看到该题目上的很多提交程序者,都很疑惑为什么提交的程序会是结果错误。在第一次提交的时候,我也出现了类似的错误,原因是对于7相关的数字进行逻辑判断划分不正确,导致了某些不该被统计的数字,错误的当做原创 2016-09-11 21:42:04 · 1233 阅读 · 0 评论 -
单源节点最短路径蛮力法和Dijkstra算法性能对比
一、单源节点问题的对比 在本文中,考虑单源点最短路径问题,对于一个加权连通图的一个称为起点的给定定点,求出它到所有其他定点之间的一系列最短路径。需要说明的是,这里所关心的不是从一个起点出发访问所有其他定点的单条最短路径,这种问题的难度更大。单起点最短路径问题要求的是一组路径,每条路径都从起点出发通向图中的一个不同顶点,其中某些路径可能具有公共边。在求带权连通图中最短路径问题有两个原创 2016-07-05 20:47:59 · 2585 阅读 · 1 评论 -
三种不同查找算法实际查找性能的对比
一、查找问题的介绍 查找问题就是在给定的集合(或者是多重集,它允许多个元素具有相同的值)中找寻一个给定的值,我们称之为查找键。有许多查找算法可供选择,其中既包括直截了当的顺序搜索,也包括效率极高但应用受限的折半查找,还有那些将原集合用另一种形式表示以方便查找的算法。最后一类算法对于现实应用具有特别重要的价值,因为它们对于大型数据库的信息存取来说是不可或缺的。原创 2016-07-05 20:45:48 · 18249 阅读 · 0 评论 -
一个C语言写的简单的单词识别程序附带VS性能分析结果
编程语言:C数据结构:链表,结构体基本思路:最外层循环判断条件是文件中有数据读取,每次从文件中读取一个字符,判断是否是字母,每次读取到空格就说明一个单词的结束,然后把得到的单词插入到链表中,链表中每一个节点存储一个单词,并记录该单词的频数,插入规则是,有该单词,则增加频数,否则插入到链表。最后从链表中选取频数最大的是个节点输出。运行结果:原创 2016-04-11 17:22:25 · 1398 阅读 · 0 评论 -
一点关于java多线程编程的效率问题
在我的上一篇关于java多线程编程的同步的博客中,提到了一个概念临界区域,即所谓的公共资源区,在同一时刻只允许一个线程访问,并且当一个线程正在占用临界区域时,其他的线程将不能进入临界区域,只能进行等待。打一个比喻,不同的车辆在不同的车道上行驶,行驶到某一个位置,有一段只有一个车道的道路,并且只允许一个车辆进入通信,怎样来提高效率呢,很显然,我们只有使得这样的单车道道路尽可能的短和当不必要的时候,尽原创 2016-03-24 15:19:37 · 547 阅读 · 0 评论 -
java thread programming
这是我在看一本关于java多线程编程的电子书时,觉得该书的讲述和所举的程序例子比较经典,能够很快的让读者理解其内容。因此我通过自己的话来将其中的部分内容进行总结一下。 我们知道,计算机中的运行的组织单位是进程,而为了提高计算机的执行效率,进一步提高计算机并发执行能力和运行效率,引入了轻量级的进程,即线程。 在java语言中,对多线程进行编程是很方便的,因为java提供的API能够让翻译 2016-03-07 11:17:29 · 591 阅读 · 0 评论 -
编程验证带权图的最短路径路由算法
在在一个带权图中,从某一个单源节点,走到其他节点,如何求得所有路径中的最短路径,是单元节点最短路径问题。而在路由算法中,与此类似,可以抽象出该模型来。迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Floyd算法,是另一个求最短路径的经典算原创 2015-12-06 16:38:24 · 5274 阅读 · 0 评论 -
互斥量与条件变量在进程间通信的应用——生产者与消费者问题
一、互斥量和条件变量 互斥量是一个可以处于两种状态之一的特殊变量:解锁和加锁,用于线程(进程)间互斥的进入临界区。其实互斥量是信号量的简化版本,信号量也是一种用于线程间互斥的进入临界区的特殊变量,不过信号量可以等于多个数值,可以通过数值表示临界资源的个数(累计唤醒次数),比如某个信号量mutex1=7可以用于表示缓冲区中有7个资源可以被消费者消费。mutex1=0表示缓冲区没有原创 2016-12-29 20:15:02 · 1124 阅读 · 0 评论