2010年4月17日

字符串处理的两个问题:删除指定字符,删除相邻相同的字符

摘要: 1.删除指定字符这是《The C programming language》中的一个例子,写的很巧妙(比我自己当时想的好多了),原地删除,没有多用额外的存储空间。[代码]2.删除相邻相同的字符 (如: abbc -> ac abccbdeffeg -> adg)还是利用squeeze()函数中的技巧,我们可以这样写:[代码]  //c为当前也许要插入的字符 c = s[0]; len ... 阅读全文

posted @ 2010-04-17 20:25 DiaoCow 阅读(1134) 评论(0) 推荐(0) 编辑

0/1背包问题

摘要: 0/1背包问题是背包问题中最基本的一种,其状态转移方程:m[i][j] = Max(m[i+1][j] , m[i+1][j - w[i]] + v[i]) 对比了自己的代码和王晓东书上的代码,感觉在两方面值得自己学习:1. jMax = Min(w[i] - 1 , c); 这样写法使得在(0 ~ jMax)可以直接赋值,无需判断,因此减少了判断次数;2. 对于求m[1][c],并不是放在循环体... 阅读全文

posted @ 2010-04-17 17:13 DiaoCow 阅读(1337) 评论(4) 推荐(0) 编辑

重建二叉树

摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1944这道题是练习递归并深刻理解二叉树遍历的好题目(编程之美上也有)[代码]//重建二叉树void Rebuild(char *pPreOrder , char *pInOrder , Node **pRoot , int nTreeLen){ int nLeftLen ,... 阅读全文

posted @ 2010-04-17 15:32 DiaoCow 阅读(2577) 评论(0) 推荐(0) 编辑

导航