- 博客(29)
- 收藏
- 关注
原创 无向图中基于宽度优先搜索的求两个节点间的最短跳数
一、问题描述 跳数是网络路由中的术语,表示消息从一个路由器传送到另一个路由器要经过几个节点的转发,就称为几跳。那么有一个问题就是,当需要找到转发次数最短的路径时,就会涉及到从一个节点到另一个节点之间最短跳数问题。 图1 一个简单的无向图 如在图1中所示,从节点0到节点6的跳数为2,我
2017-05-16 11:03:17 2989 1
原创 BAT某公司招聘在线编程题目的两种解法
日前参加了某知名互联网公司的实习生招聘,做到了在线编程题,题目大意是这样的,实现一个源编码的解压或则压缩工作,编码的完整格式为24位01代码,每六位之间用“:”间隔,如“000111:111111:111101:000000”,对于该编码实现压缩后为“111:111111:111101:”,对于编码“::11:1”, 解压后的结果为“000000:000000:000011:000001”,需要写
2017-04-28 21:43:57 1009
原创 进程间通信的竞争条件详解
一、竞争条件的含义 竞争条件是由于协作的进程具有彼此都能够读写的共享存储区导致的,任何两个或多个进程读写某些共享数据,最后的结果取决于进程运行的时序,称为竞争条件。为了进一步了解竞争条件的含义,通过下面的两个案例来说明。二、银行存取款 假设你在银行有一个账户,账户余额为200元,在某一时刻,你决定去终端ATM取款,此时你登录ATM,读取到账户余额200元,然
2016-12-30 17:14:13 2434
原创 互斥量与条件变量在进程间通信的应用——生产者与消费者问题
一、互斥量和条件变量 互斥量是一个可以处于两种状态之一的特殊变量:解锁和加锁,用于线程(进程)间互斥的进入临界区。其实互斥量是信号量的简化版本,信号量也是一种用于线程间互斥的进入临界区的特殊变量,不过信号量可以等于多个数值,可以通过数值表示临界资源的个数(累计唤醒次数),比如某个信号量mutex1=7可以用于表示缓冲区中有7个资源可以被消费者消费。mutex1=0表示缓冲区没有
2016-12-29 20:15:02 1170
原创 蚁群算法的模拟——动画演示
一、蚁群算法介绍 蚁群算法是一种在图中寻找最优路径的机率型算法。因为其算法的依据是局部的最优通过迭代形成全局最优,由于中间过程随机性因素比较多,因此称为机率型算法。算法的设计思想是模拟蚂蚁找食物,然后运回家的过程。百度百科对此过程做了一个比较好的描述:各个蚂蚁在没有事先告诉他们食物在什么地方的前提下开始寻找食物。当一只找到食物以后,它会向环境释放一种挥发性分泌物pheromon
2016-12-27 11:58:59 11969 10
原创 信号量与临界资源的使用——双向道路汽车过窄桥
临界资源或临界区是指在同一时刻只允许一个进程或线程访问,并且只有当占有该资源的进程释放了该资源后,才能被其他进程使用。因此需要设计一种机制保障进程间的通信,使得不同的进程能够知道临界资源的使用情况,当某个进程占据了临界资源时,应该告知其他进程该资源已经被占用,避免其他进程错误的访问和使用临界资源。信号量即是一种进程间通信的方法,它使用一个整形变量来累计唤醒次数,供以后使用,当信号量只有两种状态时,
2016-12-27 11:04:24 1896
原创 力学现象演示——圆周运动与弹簧弹力
一、物理现象描述 本程序模拟了一个系在弹簧一端的小球在弹簧的弹力作用下,作圆周运动,假设弹簧的初始长度为0,弹力系数为16N/m,小球质量为1kg,弹簧的弹力提供小球做圆周运动时候的向心力。然后逐渐模拟逐渐增大小球速度,这时弹簧会变长,提供一个更大的向心力,以保持系统平衡。二、编程分析 首先对物理现象进行分析,对受力情况和运动状态分析,应用了一下物理公式
2016-12-11 21:15:33 3581
原创 力学现象动画演示——真空状态下的自由落体运动
一、实验的演示内容 演示了一个在真空状态下的自由落体运动。动画是设定在如下场景下完成的,由一个橡皮球从六百米的高空掉下来,做自由落体运动,每次撞击地面时候,小球的动能会损失一半,全部转化为小球的热能,热能体现在小球的温度上升。小球的初始温度是0摄氏度。因此小球撞击地面后又会反弹,然后上升到最高点再下降,重复撞击过程,小球温度会随着撞击地面次数的增多,不断上升。动画左边有一个温度计,显示小
2016-12-10 20:23:46 4121
原创 名字的漂亮度问题求解——华为OJ题目
一、问题描述给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。输入:整数N,后续N个名字N个字符串,每个表示一个名字输出:每个名称可能的最大漂亮程度二、解题思路 由于该题是
2016-12-09 11:33:15 836
原创 公共字符串长度问题求解——华为OJ题目
一、问题描述以下是题目的描述题目标题:计算两个字符串的最大公共字串的长度,字符不区分大小写详细描述:接口说明原型:int getCommonStrLength(char * pFirstStr, char * pSecondStr);输入参数: char * pFirstStr //第一个字符串 char * pSecondStr//第二个字
2016-12-09 11:04:42 482
原创 合唱队问题的求解——华为OJ题目
一、问题的描述以下是原题目描述。要求计算最少出列多少位同学,使得剩下的同学排成合唱队形说明:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1Ti+1>......>TK。 你的任务是,已
2016-12-08 21:08:38 5640 1
原创 火车进站问题的求解——华为OJ高级难度题目
一、问题描述 关于火车进站问题的描述是这样的:N代表火车数量,0 一个实例描述:输入数字3代表总共有3辆车,然后输入三个数字,代表入站的火车编号:1 2 3 输出所有的出站序列,并按字典排序从小到大排序:1 2 3 1 3 2 2 1 3 2 3 1 3 2 1二、问题分析
2016-12-08 10:59:28 6963 1
原创 华为OJ上挑7的练习题解决过程
挑7练习题的介绍,输入一个整数N,给定了整数N范围是1到30000,要求统计出从1到N范围内所有与7相关数字的个数,与7相关的数字定义为,是7的倍数或者数字中含有7,比如17和71均含有‘7’。 看到该题目上的很多提交程序者,都很疑惑为什么提交的程序会是结果错误。在第一次提交的时候,我也出现了类似的错误,原因是对于7相关的数字进行逻辑判断划分不正确,导致了某些不该被统计的数字,错误的当做
2016-09-11 21:42:04 1273
原创 单源节点最短路径蛮力法和Dijkstra算法性能对比
一、单源节点问题的对比 在本文中,考虑单源点最短路径问题,对于一个加权连通图的一个称为起点的给定定点,求出它到所有其他定点之间的一系列最短路径。需要说明的是,这里所关心的不是从一个起点出发访问所有其他定点的单条最短路径,这种问题的难度更大。单起点最短路径问题要求的是一组路径,每条路径都从起点出发通向图中的一个不同顶点,其中某些路径可能具有公共边。在求带权连通图中最短路径问题有两个
2016-07-05 20:47:59 2642 1
原创 三种不同查找算法实际查找性能的对比
一、查找问题的介绍 查找问题就是在给定的集合(或者是多重集,它允许多个元素具有相同的值)中找寻一个给定的值,我们称之为查找键。有许多查找算法可供选择,其中既包括直截了当的顺序搜索,也包括效率极高但应用受限的折半查找,还有那些将原集合用另一种形式表示以方便查找的算法。最后一类算法对于现实应用具有特别重要的价值,因为它们对于大型数据库的信息存取来说是不可或缺的。
2016-07-05 20:45:48 18337
原创 程序帮我解答了一道无法很有说服力用手算证明的题目
今天在逛网页的时候,无意中看到了一道比较有趣的题目。首先来介绍该题吧, 在上图中,从任意的白点出发,寻找一天通过每一个白点一次的路径,要求不能经过黑点,路径经过所有的白点,且在一个白点时,只能从它上下左右有白点的位置经过,不能斜着走。当时看到这个题目的时候,自己还傻傻的在那画了很久,结果发现不管怎么画也画不出来,自己还分析出,左上角第一个点,必定是路径的一个端点,这样来画出了好几
2016-06-17 21:50:54 428
原创 一个算法题目的两种不同效率级别的算法对比
题目描述新成立的K-based王国颁布一部新的法案:一个合法的k进制数为一个不含连续两个零的k进制数。例如:1010230 是一个合法的7位数1000198 不是一个合法的数字0001234 不是7位数,是一个合法的4位数国王需要统计一下合法的数字的信息,国王给你一个n和k,要你帮忙统计出n位长度的合法k进制数的个数输入
2016-04-24 22:19:38 3139
原创 一个C语言开发的炸金花纸牌游戏附带vs性能分析报告
一、游戏说明: 本次实验,我们小组两人开发的是一个模拟炸金花的纸牌游戏,游戏附有一个操作说明文档,按照文档上的操作方法,可以简单的开启游戏,整个程序包扩一个编译好的.exe文件,和两个资源文件夹,分别存有该游戏运行时候所需要的照片资源和音乐资源,用户可以直接点击exe文件运行游戏,然后按照相关操作方法来进行游戏。二、编程语言环境介绍: 本游戏是在VC6.0环境下,
2016-04-22 16:55:02 7267 2
原创 一个C语言写的简单的单词识别程序附带VS性能分析结果
编程语言:C数据结构:链表,结构体基本思路:最外层循环判断条件是文件中有数据读取,每次从文件中读取一个字符,判断是否是字母,每次读取到空格就说明一个单词的结束,然后把得到的单词插入到链表中,链表中每一个节点存储一个单词,并记录该单词的频数,插入规则是,有该单词,则增加频数,否则插入到链表。最后从链表中选取频数最大的是个节点输出。运行结果:
2016-04-11 17:22:25 1436
原创 一点关于java多线程编程的效率问题
在我的上一篇关于java多线程编程的同步的博客中,提到了一个概念临界区域,即所谓的公共资源区,在同一时刻只允许一个线程访问,并且当一个线程正在占用临界区域时,其他的线程将不能进入临界区域,只能进行等待。打一个比喻,不同的车辆在不同的车道上行驶,行驶到某一个位置,有一段只有一个车道的道路,并且只允许一个车辆进入通信,怎样来提高效率呢,很显然,我们只有使得这样的单车道道路尽可能的短和当不必要的时候,尽
2016-03-24 15:19:37 564
原创 关于java 多线程编程的同步问题
说到线程编程,我们初步的认识,就是通过编程的方式让系统资源在不同的线程中切换,从而实现系统高效的运行。然后这看似简单明了的问题,实际操作起来,却隐藏了很多复杂的细节,其中线程间的同步和通信问题,就是导致多线程编程出现各种异常的关键。举一个简单的例子,银行的有多个服务窗口,每一个服务窗口通过叫号提供服务。假设系统设计了一个变量number,代表当前的的号数,当number大于10的时候,就不再叫号。
2016-03-17 20:54:22 434
翻译 java thread programming
这是我在看一本关于java多线程编程的电子书时,觉得该书的讲述和所举的程序例子比较经典,能够很快的让读者理解其内容。因此我通过自己的话来将其中的部分内容进行总结一下。 我们知道,计算机中的运行的组织单位是进程,而为了提高计算机的执行效率,进一步提高计算机并发执行能力和运行效率,引入了轻量级的进程,即线程。 在java语言中,对多线程进行编程是很方便的,因为java提供的API能够让
2016-03-07 11:17:29 612
原创 编程验证带权图的最短路径路由算法
在在一个带权图中,从某一个单源节点,走到其他节点,如何求得所有路径中的最短路径,是单元节点最短路径问题。而在路由算法中,与此类似,可以抽象出该模型来。迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Floyd算法,是另一个求最短路径的经典算
2015-12-06 16:38:24 5310
原创 关于C指针用法的体会和感受
提到C语言的灵活性,很容易就想到了指针,而指针也是让很多人迷惑不解的地方。指针的定义是一种用地址来访问计算机内存中存储的数值的方式,在C语言中指针是一种系统定义的类型,在C++的面向对象思想中,指针是一种对象。总之指针的本质是计算机中访问内存中数值的一种机制。指针的使用极大的提高了编程的灵活性的同时,也带来了内存管理上的很多麻烦。
2015-10-18 21:38:55 719
原创 高尔顿钉板概率模型的实现
高尔顿钉板是一个关于概率的模型,小球每次下落,将随机的向两边等概率的下落,当有大量的小球都滚下时,最终在钉板下面不同位置收集到的小球数量,将符合二项分布概率。 出于兴趣,在VC编译环境下,通过C++语言,模拟实现了高尔顿钉板的概率模型。本程序中定义了两个类,Ball和Holder类,Ball 是定义的小球类,Holder是定义的钉板类。Holder类主要负责画图显现模板框架,以及当
2015-09-21 16:19:26 20274 2
原创 由一道腾讯面试题引发的关于递归函数使用的各种情况总结
一直有一个感受就是,当我们在某些问题抽象的定义解答时候感到疑惑是,不妨看一下具体问题的解答,更加有助于我们理解问题。首先看一下腾讯的一道招聘的测试题。 1、面试题是一道程序编程题,要求使用递归的方法生成一个N位长度的格雷码,对格雷骂的定义是,相邻的两个格雷码只有一位的数字有差别。首先看一看我写的关于该题目的C程序代码:#include "stdio.h"#include"std
2015-09-08 10:47:34 1693
原创 经典任务调度算法的模拟程序
本科毕业设计写了一个经典任务调度算法的模拟仿真程序,测试了五种调度算法的运行性能。在程序中虚拟了任务的进程,按照不同调度算法策略从进程池中选取任务执行,在任务执行过程中,保存相关的统计参数,最后对这些参数进行处理,反映各个调度算法的实际运行性能,程序中可以通过修改任务的相关参数改变任务特点,测试不同任务环境情况下,调度算法的性能适应性。程序是通过C语言编写的,为了对运行结果图像化,采用了EasyX
2015-08-21 21:59:24 7239
原创 一个C语言编写的贪吃蛇游戏
在VC6.0平台上,通过C语言和EasyX图形库编写的贪吃蛇小游戏,为了使用图形库函数,建立的文件是.cpp文件,使用的是C语言编写,游戏具有背景音乐,代码长度500行左右,代码和算法,都是我自己源生的,分享给有兴趣的朋友看看。源代码:#include#include#include#include#include#define MAXLEN 30#de
2015-07-27 15:59:29 32206 2
原创 一个C语言编写的坦克大战游戏
在VC6.0平台下运用一个EasyX的图形库,用C语言编写了一个坦克大战的小游戏,代码和算法都是我自己源生的。文章的两幅配图,分别展示了游戏的开始选择界面和正在游戏界面。这个小游戏,具有游戏背景音乐,音乐是我在网上搜索到的坦克大战的音乐文件,然后将音乐的播放加入到代码的编写当中。另外游戏中坦克可以接道具,接道具后,会有相应的状态效应。由于利用的是EasyX的简单画图函数,因此整个界面的图形不是很友
2015-07-27 15:42:41 74818 13
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人