随笔分类 -  技术

编程方面的东西
摘要:前一阵子为了准备暑期实习笔试、面试,把维基上查到的常用的排序算法全写了一遍。基本是按照算法导论和维基上面的思路写的,有些算法的细节可能和一些书上有出入,但是思想是一样的。cpp文件在最后,代码如下:#include<stdio.h>#include<stdlib.h>#include<string>#include<math.h>#include<deque>using namespace std;#define SIZE 1000#define MIN -65536#define rm(x) (x>>1)#define 阅读全文
posted @ 2013-05-13 21:08 handspeaker 阅读(475) 评论(0) 推荐(0) 编辑
摘要:KMP是经典的字符串匹配算法,时间复杂度为o(m+n)KMP原理(待补充)前一阵子自己试着写了一下,代码如下:/**KMP算法实现*包含两部分:1.模式串前缀函数的计算(预处理)* 2.文本与模式串的匹配**模式串前缀函数的计算(预处理):*假设模式串的长度为len,通过计算模式串从1到len为止的所有子串的*最大前缀长度,来填充前缀数组。这个前缀满足这种特性:是这个子串的*真后缀,而且是这个子串的真前缀(即不为子串本身),能满足以上两者*的最大的那个串,取其长度。例如:abcabc,其中abc既是这个子串的后缀,*也是这个子串的前缀,并且是最长的,所以其前缀函数值为3.**计算所有子串... 阅读全文
posted @ 2013-05-13 20:59 handspeaker 阅读(749) 评论(0) 推荐(0) 编辑
摘要:一直想自己写一个小游戏,构思了好久,基本上算是成型了。鉴于我完全不懂这方面的东西,所以决定找一款合适的游戏引擎学习。之前调研了好久,发现大多数游戏引擎都是收费的,于是在开源游戏引擎中找到了libgdx,目前还没有深入使用过,不过看介绍还是很强大的。libgdx的创作者认为这并不仅仅是一款游戏引擎,还是一整套游戏开发框架。libgdx允许开发者制作出跨平台的游戏,目前支持Windows,Android,IOS,Html5等等。也就是说,开发完成的游戏,可以生成在不同操作系统或者环境下的可执行文件(其实,每种环境还是略有不同的,不过只有一点点)。libgdx的环境搭建非常简单,如果只希望能在PC上 阅读全文
posted @ 2013-05-02 10:23 handspeaker 阅读(679) 评论(0) 推荐(0) 编辑
摘要:一共参加了1次笔试,3次面试。总的感觉是,微软暑期实习的笔试难度不算很大,面试难度随面试官而异,毕竟是微软,卧虎藏龙的地方,面试官想虐人还是非常容易的。1.笔试笔试挺简单,虽然2013年的题和2012年的一点也不一样,但是大体思路是一样的。前面一部分简单题是考C,C++基础知识的,后面一部分是考算法、概率、信息论等稍微高一些的理论的。全是选择题,答错、不答扣分,少答给一部分分数,全部答对才得满分。考前我看了点C++ Primer,算法导论一直在研究,所以后面答的还不错,基本没错,前面的就比较惨了,C++用的太少,错了好多道。不过微软笔试设的门槛不算高,按照网上的答案我卷面大概有70分,不过40 阅读全文
posted @ 2013-05-01 16:34 handspeaker 阅读(4072) 评论(1) 推荐(1) 编辑
摘要:最近认真研究了一下算法导论里面的多项式乘法的快速计算问题,主要是用到了FFT,自己也实现了一下,总结如下。1.多项式乘法两个多项式相乘即为多项式乘法,例如:3*x^7+4*x^5+1*x^2+5与8*x^6+7*x^4+6*x^3+9两个式子相乘,会得到一个最高次数项为13的多项式。一般来说,普通的计算方法是:把A多项式中的每一项与B中多项式中的每一项相乘,得到n个多项式,再把每个多项式相加到一起,得到最终的结果,不妨假设A,B的最高次项都为n-1,长度都为n,那么计算最终的结果需要o(n^2)时间复杂度。而使用快速傅里叶变换(FFT),则可以将时间复杂度降低到o(nlog n)。这是因为,对 阅读全文
posted @ 2013-04-28 16:33 handspeaker 阅读(13008) 评论(1) 推荐(0) 编辑
摘要:我投的是基础研究,感觉自己比较幸运,好像是顺利的走了TST的内推,因为在笔试的时候监考官让我们在试卷右上角标注TST。而且面试通知的也是直接去银科大厦,在腾讯的茶水间面的。接下来说说面试和笔试。笔试其实挺无语的,和去年的题大量重合,我前一天刚好找了去年的题看,所以很多变态题都答上了。当然,其实还是有3,4道题根本没记住答案(但是知道是去年的题),所以就乱答的。附加题认真答了一道,另一道基本不会,随便写了几行。后来在一面的时候看到自己卷子的分数是71,面试官跟我说分数还不错,我无语ing……然后是面试,面试一共分2次,最后一次是广州那边经理的电面,可能在5.1左右才打过来。一来比较晚,二来不怎么 阅读全文
posted @ 2013-04-26 22:15 handspeaker 阅读(11184) 评论(11) 推荐(2) 编辑
摘要:题目给定一个10000以内的数字,判断这个数字是否可以由几个连续的素数(例如:2,3,5,7...)相加得到,并且给出这个数可以有几组这样的解。输入:每行一个数字,0为退出输出:每行一个数字,对应输入的每个数字的解的组数。分析题目非常简单,很容易想到解题步骤。设输入为x,只要判断x是否可以表示为x=y(i)+y(i+1)+y(i+2)+...+y(i+m),即可,其中y为某一个素数。只要设置两个变量i,j,分别指向这个连续素数串的头和尾,不停的移动寻找解即可。不过首先需要得到10000以内的所有素数,如果每次输入都计算这些素数,没有必要而且可能会超时,所以先把所有素数计算出来并存储在一个数组中 阅读全文
posted @ 2013-03-10 22:21 handspeaker 阅读(2244) 评论(0) 推荐(0) 编辑
摘要:题目:一个循环序列,其中有若干0和1,两个间隔为1(即间隔一个数)的数的位置可以互换。问题是,给定一个这样的队列,判断是否可以将所有的0和1分别归拢到一起,即可以将此循环序列切断为两个序列,一个里面只有1,一个里面只有0.思考:题目不难,刚开始没有发现公式,考虑到的情况少了,所以wa了,后来考虑到所有情况,并总结了公式,就ac了。证明:引理1:相邻的两个数只有10,01,11,00 四种情况,其中00,11这两种情况对于整个循环序列没有影响。证明:若存在11或00这两种组合,显然,通过在不同位置上执行数字互换操作(题目里所提),这种组合可以被移动到循环序列的任意指定位置。因此,当循环序列里面只 阅读全文
posted @ 2013-01-17 23:18 handspeaker 阅读(555) 评论(0) 推荐(0) 编辑
摘要:之前觉得回调函数很神奇,而且我自己也没怎么用过,就更添了一些神秘感。有一天突然特别想了解一下,结果找遍了网上的各大网站和博客,没有发现一个比较好的解释。要么直接上代码,没有一点讲解;要么讲解的云里雾里,上的例子都是windows里面的现成的回调函数。但是,经过我个人的琢磨,发现其实这玩意没啥太深奥的,在此记录一下自己的对回调函数的理解,也希望对入门回调函数的人有用。1.回调函数的定义百度百科给的定义:回调函数就是一个通过函数指针调用的函数。维基百科给的定义:回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。虽然百度百科一般来说没有维基百科准,但是关于回调函数的定义 阅读全文
posted @ 2012-12-05 13:39 handspeaker 阅读(694) 评论(0) 推荐(0) 编辑
摘要:蓄水池抽样(Reservoir Sampling)是一个很有趣的问题,它能够在o(n)时间内对n个数据进行等概率随机抽取,例如:从1000个数据中等概率随机抽取出100个。另外,如果数据集合的量特别大或者还在增长(相当于未知数据集合总量),该算法依然可以等概率抽样。说蓄水池抽样之前,先说一下等概率随机抽取问题,等概率随机抽取是一个很有用的东西,因为在很多情况下,尤其是搞模式识别时,需要这个东西。比如,我们想从10000个样本中随机抽取5000个作为训练集,5000个作为测试集,那么等概率随机抽取便派上用场了。那么,究竟该如何做等概率随机抽取呢?一般的想法应该是,随机生成一个(0,n-1)之间的 阅读全文
posted @ 2012-11-27 13:21 handspeaker 阅读(19349) 评论(0) 推荐(0) 编辑
摘要:做过几个小软件,自我感觉能拿得出手的列表如下:名称:BtControid完成时间:2011.9功能:手机作为鼠标、快捷键、游戏手柄遥控电脑下载地址:https://sourceforge.net/projects/btcontroid/(源码+APK)备注:C/S结构名称:CameraAdd完成时间:2012.6功能:通过手机摄像头识别数字并添加到联系人下载地址:http://files.cnblogs.com/hrlnw/CameraAdd.apk备注:需要自动对焦功能名称:天线绘制matlab程序完成时间:2010.7功能:绘制多种天线的方向图下载地址:http://download.cs 阅读全文
posted @ 2012-11-10 20:03 handspeaker 阅读(372) 评论(0) 推荐(0) 编辑