
编程
文章平均质量分 82
iteye_16109
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
编程珠玑 -- 关于排序
《编程珠玑》主要提到的排序方法是快排,并通过对基本算法思想的微调,以提高效率及保证最坏情况下的性能。我又回过头去看了Clifford A. Shaffer的《数据结构与算法分析》,总结了几种内排序(internal sorting)算法。(所谓的内排序,就是把所有的数据都加载到内存中后再进行排序) 首先是插入排序。插入排序就跟我们平时在排放扑克牌的算法一样。每进来一张排,就从尾到前找,为它找到...原创 2011-12-27 20:12:39 · 183 阅读 · 0 评论 -
数独人工解法的一些技巧及其python实现
这段日子实现了十几种数独的解题技巧,说实话,花费的时间比我想象的要长得多。本来说了要看论文的,结果心里痒痒,看着论文,心里想着实现这些解法的基础数据结构等等,于是忍不住小试了一下,一发不可收拾,就这样做了两个星期。中间生了一场病,在宿舍里躺了几天,顺便看了几本书,从《万寿寺》到《红拂夜奔》到《寻找无双》,也不知道是感冒药吃多了比较敏感,还是真的感触太大,有一天晚上看完《红拂夜奔》后,竟失声痛哭起来...2012-06-13 16:31:41 · 681 阅读 · 0 评论 -
Eva'Sudoku-0.1新鲜出炉啦~~
呵呵,经过将近一个星期的对pygame的了解与熟悉,我终于磕磕绊绊地把数独的基础界面做出来啦。当然啦,完全不出意思的是,很丑,所有的东西都是自己一笔一画画出来的,没有对话框,没有菜单栏,更别提什么精美的画面了。不过我却因此更了解界面编程的实质了。再复杂的界面,底层应该也是这样子画出来的吧?就跟android里面的canvas那样。同时也了解到了一个概念,叫FPS,frame per second,...2012-05-27 21:06:52 · 219 阅读 · 0 评论 -
产生数独迷题
随着数独解题算法DLX的完成,产生一个数独迷题的任务就顺理成章地完成了。当然,基本的思想还是先生成终盘,然后对填好的数独题进行挖洞,每挖一个洞,就要考虑一下挖去这个洞会不会导致迷题将有多个解。假如会,这个洞就是不能挖的。事实上当一个洞被证实挖去之后会导致多解后,这个洞就注定不能被挖了。也就是说,这个算法的复杂度应该是81*O(f(n)),其中f(n)是用于解一个数独的时间复杂度。《编程之美...2012-05-24 18:13:59 · 281 阅读 · 0 评论 -
解数独——dancing link X
折腾了一个星期,发现自己的大脑真的是短路了,智力水平下降到历史最低点,竟然折腾了那么久才理解了dancing link。所幸经过几天的反思,终于列出了接下来应该做的几件事:1. 产生数独题:1.1 实现解数独的算法dlx1.2 从数独终盘中随机选择一个cell,判断该cell是否可以挖掉而不会造成解不唯一2. 用pygame实现基本界面今天完成了1.1的编码,借此总结一下。...2012-05-21 22:59:59 · 1078 阅读 · 1 评论 -
一个小题目(单词统计)
今天休息的时候看到一个关于单词统计的小题目:[b]统计一段由字符和和空格组成的字符串中有多少个单词[/b]题目一看觉得很简单,无非是遍历字符串,然后根据字母是不是空格之类的来统计单词的个数。博主用了一个状态机来做这件事,我觉得颇有新意,所以就记下心来了。后面的留言有人觉得博主这是把简单问题复杂化,其实我觉得不然。最近在看《设计模式精解》,开篇作者提出的观点我就觉得非常好:需求总是在...原创 2012-08-14 23:12:18 · 260 阅读 · 0 评论 -
编程之美续
看完编程之美后看很多题,都会发现原来只是里面一些题目的变种(也大概因为看的是微软的笔试题吧。。),把原先的算法稍微一改,就变成了题目的解法,还是挺带劲的。[b]1. 反转单向链表:给出单向链表的头指针,要求把链表反转过来。[/b][code="cpp"]struct ListItem{ int value; struct ListItem* next;};L...2012-04-06 15:37:48 · 203 阅读 · 0 评论 -
编程之美
前段日子又看了编程之美,后来闲着无聊学python去了,想着书将要送人,还是先总结一下,不然怕又要忘了,呵呵。主要看的章节是第二、第三章,因为对数独有特别的感情,所以还顺带看了一四章关于数独的那两节。[b]1. 对于一个字节的无符号整形变量,求其二进制表示中“1”的个数。[/b]最简单的莫过于用/跟%一个位一个位地测试:[code="cpp"]int count( un...2012-04-02 16:54:09 · 157 阅读 · 0 评论 -
图论--旅行商问题
五一果然基本献给了数据压缩(除了两个晚上用于打球),看了小波的一些理论,看了EZW编码和SPIHT编码方法,看了一篇基于提升小波和改进SPIHT算法的图像编码的论文,最后就决定以这篇文章为基础进行实现了。还好理解了SPIHT算法的整个过程了,不然这篇文章估计也看不懂。现在比较愁的是,我要用matlab实现好呢?还是用c实现啊?matlab不是很熟,可是如果c的话可能要有很多跟图像相关的操作,还有矩...原创 2011-05-04 14:57:59 · 1341 阅读 · 0 评论 -
图论--寻找欧拉回路
首先介绍一下fleury算法。大概描述是这样子的:(1)设图G的顶点集为V(G), 从中任取一个顶点V0,令P0 = V0;(2)设Pi=v0e1v1e2...eivi已经行遍,按下面的方面来从E(G)-{e1, e2, ..., ei}中选取ei+1: (2.1)ei+1与vi相关联,也就是,从vi射出。 (2.2)除非无别的边可供选择,否则ei+1不应该为Gi=...原创 2011-04-27 21:05:41 · 517 阅读 · 0 评论 -
图论--中国邮递员问题
中国邮递员问题就比较悲催了。前后花了我大概有三天的时间。。今天才做完的。。 首先描述一下问题:邮递员从邮局出发送信,要求对辖区内每条街都至少通过一次,再回邮局。在此条件下,怎样选择一条最短路线?如果街区形成的图本身就是一个欧拉回路,最短路自然是所有街道的总长度。可是如果不是,我们将必须重复一些路径,换句话说,怎样使重复的路径的总长度最短。 这个问题涉及的问题包括:(1)...原创 2011-04-27 20:25:47 · 6965 阅读 · 1 评论 -
图论--关键路径
最近忙着做作业。主要是《代数与图论》的一些算法的实现,五一估计不用过了,数据压缩要看论文,信息检索要做实验,实验室还要实现模糊匹配的改进。。。我怎么选了这么些难搞的课啊。。编程珠玑看来要被无限地搁置了 说一下关键路径的实现吧。其实主要也是从网上看来的。 关键路径的相关概念: 1. AOE图:在工程上,很多任务之间常常有先后顺序的要求,例如,建房子前要先打桩等。任务与任务...原创 2011-04-27 19:37:15 · 290 阅读 · 0 评论 -
C语言中的文件操作
常常觉得,我对很多东西都是要求会用就好,不求甚解。比如说每次一遇到文件操作,我必要查查相关的API和例子,然后依样画葫芦写下来。或许正是因为这种不求甚解的态度,让我一直处于半桶水的状态。看完了《C专家编程》后,觉得很多东西里面有包含了很多学问;开了博之后,常常希望写点有用的东西,有点像记笔记了,呵呵。记笔记有一个好处,就是要求你必须对现有的知识进行整理,然后才能有条理地写下来。昨天写算法的时候又遇...原创 2011-04-16 11:34:45 · 154 阅读 · 0 评论 -
数据结构——2-3树
年前实现了一个2-3树,后来就玩儿去了,再后来看书去了,所以就耽搁了。基本上网上找不到什么2-3树的实现,大概是因为这东西基本真正被用过吧。基于它的思想而发明的B树,B+树才是真正的大头,不过2-3树的模型比较简单,对我们理解B树和B+树的实现有很大的帮助,所以最终我还是通过自己的努力,实现了一个2-3树。下面是2-3树的基本介绍:2-3树不是一种二叉树,但他的形状满足以下性质:(1)一个...原创 2012-02-10 14:25:30 · 346 阅读 · 0 评论 -
数据结构 -- 二叉树(BST, AVLTree, RBTree, SplayTree)
在《基于树的索引结构介绍》(http://philoscience.iteye.com/admin/blogs/1112759)中提到了二分查找树及其改进版本AVL树(平衡二叉树)。二分查找树比较简单,但是很容易产生不平衡的问题而丧失了二分查找树的优势,AVL树规定了左右孩子树的高度差超过1则为不平衡,为了维持平衡,在插入和删除子节点后,必须进行相应的旋转。还有一种著名的红黑树,红黑树放宽了平衡的...原创 2012-01-17 21:31:34 · 448 阅读 · 1 评论 -
编程珠玑--关于查找(二分法、自组织链、哈希)
查找是我们现实生活中经常需要做的事情。例如用字典查一个英文单词的释意,首先我们会定位到这个单词所在的页,然后再看与该单词关联的解释。这个过程中,单词是key,而单词+单词的释意则是一个record。信息的组织方式很大程度上影响了查找的方法,《编程珠玑》和《数据结构与算法分析》一样,介绍了针对两种信息组织方式的不同的查找方法。首先是链表/数组的线性组织方式。在这种情况下,如果数据是排序的,那么二...原创 2011-12-31 19:36:11 · 283 阅读 · 0 评论 -
编程珠玑 -- 关于堆
堆是这样一种数据结构,它首先是一棵二叉树,而且还是一棵完全二叉树;其次,对于最小堆,父节点的值小于子节点。有两种特殊要求的二叉树,一种是完全二叉树,一种是满二叉树。完全二叉树添加叶子节点的时候,要求从左到右添加,所以如果左子树没有被填满,就不会把叶子结点添加到右子树上。满二叉树则要求一个节点要么有两个孩子,要么就没有孩子。他们的形状如下: 完全二叉树的性质使我们可以使用一个数组来表达一...原创 2011-12-28 15:31:25 · 220 阅读 · 0 评论 -
我对KM算法的理解
一般对KM算法的描述,基本上可以概括成以下几个步骤:(1) 初始化可行标杆(2) 用匈牙利算法寻找完备匹配(3) 若未找到完备匹配则修改可行标杆(4) 重复(2)(3)直到找到相等子图的完备匹配关于该算法的流程及实施,网上有很多介绍,基本上都是围绕可行标杆如何修改而进行的讨论,至于原理并没有给出深入的探讨。KM算法是用于寻找带权二分图最佳匹配的算法。二分图是...原创 2012-12-26 15:47:46 · 2544 阅读 · 0 评论