上一页 1 ··· 7 8 9 10 11 12 13 下一页
摘要: 1. 简述 假设待排序数组为 int array[], 数组长度为n。第1趟,认为array[0]-array[0]已经排序,把array[1]插入到合适的位置。 第2趟,认为array[0]-array[1]已经排序,把array[2]插入到合适的位置。 ···第n-1趟,认为array[0]-array[n-2]已经排序,把array[n-1]插入到合适的位置。2. 复杂度 最好的时间复杂度是O(n),对已经排序好的数组,只需要n-1次比较就可以了。平均时间复杂度和最坏时间复杂度都是O(n^2)。 在每次趟中,寻找合适位置时,可以使用二分查找的方法,来减少比较 阅读全文
posted @ 2011-06-07 16:24 xiaodongrush 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 1. 简述 假设待排序数组为 int array[], 数组长度为n。 第1趟在array[0]-array[n-1]范围内,从后向前依次比较,把较小交换到前面,最终最小的元素会站在array[0]里面。 第2趟在array[1]-array[n-1]范围内,··· ,最终第二小的元素会站在array[1]里面。 ... 第n-1趟,在array[n-2]-array[n-1]范围内,··· , 最终第n-1小的元素会站在array[n-2]里面。 至此,排序结束。2. 复杂度时间复杂度T=O(n*n),而且如果按照上面的算法来实现, 阅读全文
posted @ 2011-06-07 15:50 xiaodongrush 阅读(321) 评论(1) 推荐(0) 编辑
摘要: 1. 缘起 由一个题目引起的:问下面代码输出的是什么?constchar*psz="helloworld";intiArr[]={1,2,3,4,5};cout<<sizeof(psz)<<endl;cout<<sizeof(iArr)<<endl; 前者输出是4,输出的是psz的类型大小,即指针类型占4个字节(在win32下)。 后者输出是20,即该数组的长度。 我是直接看到这题答案的,开始没有多想,但是后来发现数组名和指针是很相像的,印象里无论是数组名和psz都指向一串地址的第一个地址啊,怎么sizeof的计算方式不同呢? 阅读全文
posted @ 2011-05-31 09:21 xiaodongrush 阅读(334) 评论(2) 推荐(0) 编辑
摘要: 1. 简述 前两天被问道整数类型的范围,果断被鄙视了,回来好好看了下,这里做个总结。2. 无符号整数 在普通32位机器上,unsigned short int(2个字节), unsigned int(4个字节), unsigned long int(还是32个字节,因为以前的一些机器上int是2个字节的,short是1个字节的缘故,所以4个字节才被称为long) 以unsinged int为例,4个字节,32个比特位,数据大小就是[0, 2^32-1],即32个位能够表示的数据范围的长度就是2^32。 类似的对于char这个类型,其范围是[0, 2^8-1]3. 有符号整数 无符号的整数范围很 阅读全文
posted @ 2011-05-30 10:55 xiaodongrush 阅读(5158) 评论(2) 推荐(0) 编辑
摘要: 1. 简述 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 需要实现的操作有:合并两个集合,判断两个元素是否属于一个集合。 这里介绍的主要是普通的并查集,很多情况下使用的并查集是需要扩展的,根据使用情况的不同,有很多差别,这里仅仅是最基本的算法。2. 复杂度 T=O(n*α(n)), 其中α(x),对于x=宇宙中原子数之和,α(x)不大于4。事实上,路经压缩后的并查集的复杂度是一个很小的常数。3. 伪代码 没有使用路径压缩和启发式的方法。//初始化并查集#define N 100int father[N];void 阅读全文
posted @ 2011-05-27 10:01 xiaodongrush 阅读(12384) 评论(0) 推荐(1) 编辑
摘要: 1. 简述 解决任意两点间的最短路径的一种算法。2. 复杂度 T=O(V^3),S=O(V^2),使用邻接矩阵存储。3. 伪代码 需要注意的是i,j,k三个变量的顺序。//dist(i,j)为从节点i到节点j的最短距离Fori←1tondoForj←1tondodist(i,j)=weight(i,j)Fork←1tondo//k为“媒介节点”Fori←1tondoForj←1tondoif(dist(i,k)+dist(k,j)<dist(i,j))then//是否是更短的路径?dist(i,j)=dist(i,k)+dist(k,j)4. 参考资料 维基百科 阅读全文
posted @ 2011-05-27 09:29 xiaodongrush 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 1. 极小极大搜索方法 一般应用在博弈搜索中,比如:围棋,五子棋,象棋等。结果有三种可能:胜利、失败和平局。暴力搜索,如果想通过暴力搜索,把最终的结果得到的话,搜索树的深度太大了,机器不能满足,一般都是规定一个搜索的深度,在这个深度范围内进行深度优先搜索。 假设:A和B对弈,轮到A走棋了,那么我们会遍历A的每一个可能走棋方法,然后对于前面A的每一个走棋方法,遍历B的每一个走棋方法,然后接着遍历A的每一个走棋方法,如此下去,直到得到确定的结果或者达到了搜索深度的限制。当达到了搜索深度限制,此时无法判断结局如何,一般都是根据当前局面的形式,给出一个得分,计算得分的方法被称为评价函数,不同游戏的评价 阅读全文
posted @ 2011-05-26 18:38 xiaodongrush 阅读(32488) 评论(0) 推荐(7) 编辑
摘要: 1. 简述 记得,在上面向对象程序设计的课中,就学过有限状态机,后来上编译原理的时候,接着有限状态机,直到研一的形式语言自动机中,还是有限状态机。貌似有一个很列害的ERP中的核心解决方法也是状态机。不过给我印象最深的还是本科做的百项工程时,使用有限状态机实现无线模块的自动组网与通信,状态机说简单吧,确实挺简单,尤其是实际用的时候,但是想用好吧,也不轻松,状态机的实现是很简单,但是状态机得设计是要花一些心思的。 这一章主要是通过两个例子,来说明状态机在游戏中的使用,下面分别简单说一下其中一个例子。第二个例子主要是代码较多,没有太多的不同,具体想实现状态机的时候,参考一下更有价值。2. 鬼怪的有限 阅读全文
posted @ 2011-05-25 09:23 xiaodongrush 阅读(1670) 评论(0) 推荐(0) 编辑
摘要: 1. 简述 所谓的描述式AI,基本上与一般应用程序中的配置文件很相像,把AI角色的一些重要属性和逻辑规则使用文件存储,这样只要修改文件中的内容,而不必重新编译软件就可以对游戏进行调试。对于小型的游戏,实现描述式AI还是可行的。但是对于大型游戏,就要靠物理引擎来完成了。2. 注意几点 这一章,确实没有什么好记录的,基本上就是说角色的属性可以记录,角色的行为规则可以记录,如果自己实现描述式AI,还有注意读取文件的时候,考虑到文件中的数据是非法形式时,这样处理,对数据左右空格的处理。 阅读全文
posted @ 2011-05-25 08:39 xiaodongrush 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 1. 简述 A*是当今游戏软件开发中十分常用的一种路径寻找算法。A*算法之所以会如此吸引人,是因为它可以保证在任何起点及任何终点间找到最佳的路径。我们可以尽量使用A*算法,除了某些特殊情况的场景。例如,如果起点和终点之间没有障碍物,有明确的视线,那么视线移动算法即快速又有效,就没有必要使用A*算法了。如果CPU的功能不强,A*算法会耗用不少CPU运算能力,尤其是,需要同时为许多游戏角色寻找路径的时候,A*算法可能不是最佳的选择。下面几个部分,逐步的讨论使用A*算法的步骤。2. 定义搜索域 无论是连续环境还是砖块环境,如果其中点数量太大,那么A*算法不切实际。但是通过简化搜索区域,A*算法会变得 阅读全文
posted @ 2011-05-24 11:02 xiaodongrush 阅读(1364) 评论(0) 推荐(1) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 下一页