摘要: 工作原理: 首先,选择一个单词作为密钥,如 ziqi ,如果单词中包含重复的字母,只保留第一个,其余几个丢弃,ziqi 则剩余 ziq 。现在修改过的单词位于字母表的下面,如下所示: a b c d e f g h i j k l m n o p q r s t u v w x y z z i q 然后第二行用字母表中剩余的字母填充完整: a b c d e f g h i j k l ... 阅读全文
posted @ 2012-01-19 12:04 青霜 阅读(635) 评论(0) 推荐(0) 编辑
摘要: 假设有一个有序的字符串链表,链表中的每个节点为一个单词,我们可以使用它来将单词插入到链表,同时不会导致重复,但这样带来的问题是搜索链表的时间会随着链表规模的的扩大而急剧增长。那么如何缩短这个时间呢?不妨先看看下图:如上图所看到的数据结构,它的思路是将整个链表分解成26×27个链表,第一个链表存放26个字母,作为一级链表,该链表每个节点还存放一个指针,指向二级链表,二级链表同样存放26个字母,每个节点包含了一个指向单词链表的指针。单词的第一个字符在一级链表当中找到匹配项,找到匹配进入二级链表,将单词的第二个字符在二级链表找到匹配项,进入单词链表找到整个单词的匹配项。首先先构造一级、二级 阅读全文
posted @ 2012-01-07 11:49 青霜 阅读(679) 评论(0) 推荐(0) 编辑
摘要: 在下面所示的棋盘中,皇后可以攻击位于箭头所覆盖的位置的所有棋子,那么现在有八个皇后,如何放置可以让他们之间不会相互攻击呢?本文采用回溯法,先附上维基百科上对回溯法的解释:“ 回溯法(英语:backtracking)是穷尽搜索算法(英语:Brute-force search)中的一种。 回溯法采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:1、找到一个可能存 阅读全文
posted @ 2011-12-21 17:27 青霜 阅读(2333) 评论(0) 推荐(0) 编辑