摘要:
1、减号(加号)在c++中我们这样定义一个函数public void Test(bool flag){ cout<<"hello world!!"<<endl;}而在objective c中是:-(void)Test:(bool)flag{ NSLog(@"hello world!!");}其中... 阅读全文
摘要:
3.经典例题 设R = {r1,r2,r3......rn}是要进行排列的n个元素,Ri = R-{ri}。集合X中元素的全排列记为Perm(X)。(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列。R的全排列可归纳定义如下: 当n = 1时,Perm(R) = (r),其中r是结婚R中唯一的元素。 当n > 1时,Perm(R)由(r1)Perm(R1),(r2)Perm(R2)......(rn)Perm(Rn)构成。其实这就是一个递归过程,拿(r1)Perm(R1)来说,全排列Perm(R1) = Perm( {r2,r3,r4.....rn})之 阅读全文
摘要:
1、对于递归算法的认识,可以简单的归纳为:直接或者间接调用其本身的算法称之为递归算法。一般而言,递归算法表达式简单,易理解,但要写出递归算法之前,我们需要先理清每个递归函数的非递归函数的定义,而且一定要有跳出递归的边界条件(这个很重要)。2、简单例子 1). int function(int n) { if ( n == 0) return 1; else return function(n-1); } 2).Fibonacci数列 int function( int n) { if (n ==0) return 1; else return function(n-1)+f... 阅读全文
摘要:
1 、在一个函数中new了一块空间,然后再另一个函数使用,当最后要释放时,如果释放时出现堆栈错误,可能是释放堆栈太快了,数据来不及读取处理,需要在关闭某些函数资源后sleep一会儿,再delete在有效,否则可能会出现错误。(这只是个人情况)比如:我在函数A中new了一块buffer,然后再call back 函数中使用这块空间,在执行结束后,我们需要关闭一些资源,这是我们就需要sleep(100)//休眠0.1秒,delete buffer才不会出错。但是切记,有new一定要delete掉,不然会出现内存泄漏,关于内存泄漏可以使用vld来测试,具体使用方法可以百度。2、对于字对齐问题,短字符 阅读全文
摘要:
1、赋值问题
举例:DWORD qq;
char *ptr;
qq = prt;
是表示将ptr的地址指针传给qq,但是由于DWORD 是32位的,而char是8位的,所以会导致如果prt的地址第一位为1的话,那么赋值给qq的前24都会是1,因为char是有符号的,所以在使用查找地址时,需要用无符号的char指针,即unsigned char *ptr表示即可,这样赋值查找地址就不会出现错误。 阅读全文
摘要:
以下是网上找来的,我整理了下,个人觉得写的挺好的,分享给大家。一、介绍BM算法:是一种精确字符串匹配算法,其基本思路采用从右向左比较的方法,其中用到了“坏字符规则”和“好后缀规则”,通过这两个规则来决定向右跳跃的距离。二、算法流程BM算法的基本流程:设文本串T,模式串为P。先将T、P左对齐,然后从右往左依次逐个字符比较,如果发现不匹配,则使用前面提到的两个规则来计算得到跳跃的距离,一直到匹配结束或者匹配成功。三、概念介绍在匹配中已经匹配的部分称为好后缀,第一个不匹配的字符成为坏字符。1).坏字符规则在BM算法从右向左扫描的过程中,若发现某个字符x不匹配,则按如下两种情况讨论: i. 如果字符. 阅读全文
摘要:
这是我再水木社区看到的题目,然后自己思考了下。问题是这样的,现在有n个长度都为m的int数组, 每个数组可以有两种行为:原地不动,或者数组翻转。所谓数组翻转,就是a[i]=a[m-1-i],首尾颠倒。比如: [1,3,2,9]的翻转就是[9,2,3,1]。现我们将这n个翻转或者不翻转的数组的对应位置相加成一个新数组(sum[i]=a1[i]+a2[i]+...+an[i]), 现找到最优解让sum数组的方差最小。1).用一个二维数组array[n][m]表示n个长度为m大小的数组,初始化数据。 2).计算sum的平均值S_average = sum(array)/m,这求得sum[i]的平均值 阅读全文
摘要:
26个字母,不区分大小写,权重为1-26,每个字母的权重可以任意分配,但不能重复。任 意输入两个单词(字母数不超过255),请设计算法,能够计算出一种权重分配方法,使这 两个单词的权重差最大!我的想法是取单词A每个字母出现为+1,而单词B对应每个单词出现记为-1,先通过计算出两个单词所有字母的情况,然后从大到小排序,可能结果的形式为:p(13),c(9),h(2),e(0),w(-2),b(-6) ....o(-17);设置权重,将这个分为两部分,一部分>=0,一部分=0) W1 = 26*13+25*9+......+(-17)*12).再反过来算一次,即p=1;c=2.......( 阅读全文
摘要:
题目:r个颜色,每个颜色m个球,共m*r个球,要求均匀放到N个瓶子中(假设r可以被N整除),相同颜色的球不可以在同一个瓶子里,请问有多少种不同的放法。 阅读全文
摘要:
一、简介 A*算法是启发式算法的一种,可以求出在图形平面上有着多个节点时,找到两个节点之间的最短路径,它的用到的地方还是挺多的,如游戏中的NPC移动,其实A*算法和Dijkstra算法很像很像的(个人相当感觉额,但也有一点点差异),如果你了解Dijkstra算法的话,那对于A*算法就很容易接受了。二、算法主要内容 对于A*算法而言,需要设计一个估计函数,即f(n) = g(n) + h(n),其中g(n)表示搜索起点到当前节点的代价(通常用某节点在搜索树中的深度来表示的),h(n)表示当前节点到目标节点的估计值,对于A*算法的估计函数而言,其中h(n)的设计最为重要,也是衡量是否为A*算法的一 阅读全文