上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 34 下一页
  2012年10月8日
摘要: 1 <?php 2 #给定入栈序列,求出栈序列组合总数 3 #这是一个catalan数问题 4 #设共有n个数入栈,将入栈序列和出栈序列写在一起共有2n个数 5 #将第一个入栈的数作为基点,则第一个数肯定是在第2i+1的位置出栈 6 #否则第一个数入栈编号是0,如果是在2i,则在第一个数入栈和出栈之间共有2i-1个数,是奇数 7 #既然是奇数,则说明有数在第一个数出栈之前入栈却没有出栈,矛盾 8 #那么,我们可以找到地推规律,设f(2n)表示n个数的入栈出栈序列总数 9 #则 f(2n) = f(0)f(2n-2) + f(2)... 阅读全文
posted @ 2012-10-08 00:14 ZimZz 阅读(279) 评论(0) 推荐(0)
  2012年10月7日
摘要: 1 <?php 2 /** 3 *一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值 4 *比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1; 5 *{3,6}{2,4,3} m=2 6 *{3,3}{2,4}{6} m=3 所以m 的最大值为3 7 **/ 8 9 #解题思路10 #首先m必须满足两个条件11 #1. 1<=m<=n12 #2. sum(a) % m = 0,即sum(a)必须是m的倍数,其中a为待切分数组13 #解题步骤:14 #1. m... 阅读全文
posted @ 2012-10-07 19:47 ZimZz 阅读(2449) 评论(0) 推荐(0)
  2012年10月6日
摘要: 1 <?php 2 #合并两个非降序链表并去重,并且不能修改原链表数据 3 #非降序,则链表内部有可能重复 4 5 class Node { 6 public $data = null; 7 public $next = null; 8 } 9 10 function traverse($head) { 11 while ($head != null) { 12 echo $head->data . " "; 13 $head = $h... 阅读全文
posted @ 2012-10-06 21:53 ZimZz 阅读(495) 评论(0) 推荐(0)
摘要: 1 <?php 2 /** 3 *设计一个系统处理词语搭配问题,比如说中国和人民可以搭配, 4 *则中国人民人民中国都有效。要求: 5 *系统每秒的查询数量可能上千次; 6 *词语的数量级为10W; 7 *每个词至多可以与1W 个词搭配 8 *当用户输入中国人民的时候,要求返回与这个搭配词组相关的信息。 9 **/10 11 /**12 *解决思路13 *假设10W的词语都是二字词语,UTF8存储,则每个词语占 2*3 bytes = 6 bytes14 *现在先对10W个词语建一棵二叉查找树,... 阅读全文
posted @ 2012-10-06 19:17 ZimZz 阅读(1983) 评论(0) 推荐(0)
摘要: 1 <?php 2 #串连珠子问题(类似于关键字搜索) 3 4 function shortest_sub($a, $m) { 5 $color = array(); #用于存储当前子串某种颜色出现的次数,如color[0] = 2表示颜色0出现2次 6 $sum = 0; #用于存储当前子串共出现了几种颜色 7 $bstart = 0; #最短字串的开始坐标 8 $blen = count($a); #最短子串长度 9 10 #将color数组初始化为011 for ($i =... 阅读全文
posted @ 2012-10-06 01:48 ZimZz 阅读(318) 评论(0) 推荐(0)
  2012年10月5日
摘要: 1 <?php 2 #有n个字符串,每个数组长度m+1,如果数组的后m个元素和另一个数组的前m个元素相同,则两个数组可以相连 3 #求n个数组中连接起来的最长路径是多少,如果遇到环路则报错退出 4 5 function longest($a, $m) { 6 $len = count($a); 7 #把二维数组$a的每个字符串元素看成一个节点 8 #建立节点之间的联通关系数组g,g[i][j]代表节点ij之间的最长路径 9 10 #初始化g,讲可连通的节点值设为111 $g = arra... 阅读全文
posted @ 2012-10-05 21:32 ZimZz 阅读(1264) 评论(0) 推荐(0)
摘要: n 支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系, 存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j 的队伍中更强的一支。 所以w[i][j]=i 或者j,现在给出它们的出场顺序,并存储在数组order[n]中, 比如order[n] = {4,3,5,8,1......},那么第一轮比赛就是4 对3, 5 对8。....... 胜者晋级,败者淘汰,同一轮淘汰的所有队伍排名不再细分,即可以随便排, 下一轮由上一轮的胜者按照顺序,再依次两两比,比如可能是4 对5,直至出现第一名 编程实现,给出二维数组w,一维数组order 和用于输出比赛名次 阅读全文
posted @ 2012-10-05 18:35 ZimZz 阅读(402) 评论(0) 推荐(0)
摘要: 1 <?php 2 #二叉树的非递归遍历 3 class Node { 4 public $data; 5 public $left; 6 public $right; 7 } 8 9 #前序遍历,和深度遍历一样10 function preorder($root) {11 $stack = array();12 array_push($stack, $root);13 while (!empty($stack)) {14 $cno... 阅读全文
posted @ 2012-10-05 03:23 ZimZz 阅读(1992) 评论(0) 推荐(0)
  2012年10月3日
摘要: 1 <?php 2 #输入n,判断从1~n序列中十进制数里1出现的次数 3 #例如输入12,则含有1的数字有1,10,11,12, 这里1一共出现了5次 4 5 #判断十进制数出现1的次数 6 function count1dec($x) { 7 $i = 1; 8 $count = 0; 9 10 #从个位数开始获取x的每一位数,并判断是不是111 while ($x >= pow(10, $i - 1)) {12 $r = floor($x % pow(10,... 阅读全文
posted @ 2012-10-03 16:39 ZimZz 阅读(426) 评论(0) 推荐(0)
  2012年10月2日
摘要: <?php #输入一个栈的压栈序列和一个弹栈序列,判断该弹栈序列是否可能是压栈序列的输出 #例如压栈序列 12345,则弹栈序列可以是 54321 或者 45321 #解题思路,建一个空栈,按照压栈序列入栈,当压入的栈顶元素与弹栈序列的指针指向元素相同时,将元素弹出 #直到将压栈序列的元素全部压完,如果弹栈序列是正确的,则最后栈内元素可以按照弹栈序列顺序弹出,最后栈为空 #否则栈不为空 function test($push, $pop) { $len = count($push); $stack = array(); ... 阅读全文
posted @ 2012-10-02 20:55 ZimZz 阅读(776) 评论(0) 推荐(0)
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 34 下一页