摘要: 昨天一直在琢磨,看怎样能缩短时间。函数、方法、判断什么的都没办法改进了。那就只有改善算法了。后来总算想到一个还算可行的办法。当如上图的情况下,很明显往后再怎么寻路,都不可能到达终点。加个判断直接把此节点false掉岂不是能节省大部分的无用递归?那如何判断呢?当point(2,5)遍历寻找四周可用节点进行递归之前,先调用A*寻路看所有可用节点能否到达终点即可。无法到达则放弃。此图里面,point(2,5)是被放弃的,后面省去的递归数至少好几千。而如果每次递归之前调用A*的话,总时间是会翻好几番的。到底A*花的时间多,还是省去的递归时间多,那就只能实际测试一下才知道了。于是花了大量时间把A*独立出 阅读全文
posted @ 2012-03-20 21:16 妖気 阅读(509) 评论(0) 推荐(0) 编辑
摘要: (地图最大尺寸达到23*24. 穷举寻找最优路径基本已经是无法完成的任务……)1.10更新内容如下:增加1~6店7~9口碑的地图。6店所有地图已改,请自行删除保存文件夹下的地图文件。 地址:C:\(我的文档路径)\SavedGames\QQMarketSet\Save\Player1 删除其中的6-1.sav到 6-6.sav ,6个文件即可 (感谢々濤♂随陽の奔流べ提供数据)下载地址:(版本过期了,请下新版)本帖地址: http://www.cnblogs.com/youki/archive/2012/03/20/2407303.html有朋友说无法运行的。这里补充说明一下:下载后请务... 阅读全文
posted @ 2012-03-20 08:16 妖気 阅读(597) 评论(0) 推荐(0) 编辑
摘要: 苦思无果之余,某群友发了个帖子给我,我一看,同样是求2点间所有路径的算法,用的是C++和结点栈。想法非常独特,引用了一个线的定义。完美解决了递归改为循环中的路径标记问题。于是本人辛辛苦苦弄了半天终于把递归改为了while循环+结点栈。测试后雷了……花的时间竟然比原来的递归还多一点!我这是何苦来哉、、、其实作者文章开头就已经声明了,效率不高。但没想到比递归还要低,那还不如用递归呢?该帖地址俺就不贴了。下面是改过后的代码。估计是路径标记的判断和更新花费太多时间。看来需要从其他方面下手了。 private LinkedList<Point> paths;//当前键值集合 ... 阅读全文
posted @ 2012-03-18 21:15 妖気 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 1.递归与非递归的区别:递归的代码量比非递归的代码量少,因为非递归需要额外的变量记录当前所处的位置信息,以及额外的控制语句。而递归所使用的方式是函数调用,这是非常自然的栈结构,不需要记录位置信息,不需要添加控制语句,这些工作都由函数调用的特性解决了。递归的执行效率比非递归的执行效率低,因为递归的实质是函数调用,而函数调用必然要进行线程栈空间的分配,记录每一次函数调用前的状态等工作,开销是比较大的。而非递归则不需要进行这些工作。递归与非递归调用最主要区别就是在函数调用上。在计算机的工作方式中,函数调用是以栈结构来实现的,最早调用的函数处于栈底,最晚调用的函数处于栈顶,栈中存放的是每个函数中的局部 阅读全文
posted @ 2012-03-18 12:20 妖気 阅读(9311) 评论(0) 推荐(0) 编辑
摘要: 经群里高人点拨。决定还是先把算法优化下试试。递归算法本身效率就比较低下,由于其便捷性,还有本人思维狭隘性,目前还无法想出替代它的方法。只能从递归内部的逻辑运算和变量等开始着手。先在各个过程里加上计时器,看哪里耗时最大。例如: timer = new Stopwatch(); timer.Start(); times[0] = (int)timer.Elapsed.TotalMilliseconds; searchAll(startTile, paths); times[0] = (in... 阅读全文
posted @ 2012-03-17 23:39 妖気 阅读(776) 评论(1) 推荐(0) 编辑
摘要: 应广大群众的要求,终于开始着手研究最优路径了。其实最初一直认为,计算量太大,家用电脑的性能根本就无法实现。等真的做了之后才知道……真的无法实现!!何谓最优?以QQ超市的经营理念,应该满足如下要求: 1.销售面数最大 2.充分利用所有空间 3.既要满足非RMB玩家的要求(全单面),又要满足RMB玩家的要求(多放双面和4面) 4.单格货架、双格货架能合理搭配摆放在空位上。基本上,除了第一点,其他都无法满足要求……----------------------------------------------------想了很久,基本思路:用穷举法找到所有路径,然后计算找出面数最大路径。具体如下... 阅读全文
posted @ 2012-03-16 20:09 妖気 阅读(847) 评论(0) 推荐(0) 编辑
摘要: XNA4.0学习过程中,练手方便,就把2D的改为3D的了。功能基本没变化。加了一些学习过程中学到的东西而已。山水、草地~超市货架地板等都是自己用3ds max2011建模,材质球改了下颜色,随便加2个贴图而已。货架和地板的effect都是basicEffect。XNA和winform结合方法用的是微软的方法。有兴趣可以下载下来看看。更新到1.11版地址:http://115.com/file/anf2p1o9#另外透露下,本人学XNA用了2本教程。1.XNA_4.0_学习指南。这个目前应该是比较出名的了。中文的。2.3D Graphics with XNA Game Studio 4.0。 这 阅读全文
posted @ 2012-03-15 10:26 妖気 阅读(589) 评论(1) 推荐(1) 编辑
摘要: XNA4.0开发的。学XNA后的练手作品。功能: 1.模拟配置货架 添加、删除、移动、旋转功能齐全 可设置双面宝石和4面宝石。 自动寻路 2.地图齐全。可保存。 3.实时自动计算当前地图的 各种货架的数量、 有效销售面数、 销售力(售货宝石未加入计算) 利润下载地址:(版本过期了,请下新版)代码很乱,就不共享了。个人觉得比较麻烦点的是货架的售货方向设置。要通过宝石类型判断方向,然后调用箭头贴图进行旋转后绘制。寻路用的是a*,微软有个XNA寻路例子,直接用上了。 阅读全文
posted @ 2012-03-15 10:03 妖気 阅读(287) 评论(0) 推荐(0) 编辑