生成可重集的排列

刘汝佳在算法竞赛入门经典,http://book.douban.com/subject…,的 118 页提到生成一个可重集的全排列问题,跟上次的 生成一个字符串的全排列 很相像,但是写法却巧妙很多 #include <stdio.h> void quick_sort(int a[], int left, int right) { int i=left, j=right; int povit = a[(i+j)/2]; while (i ……

阅读全文

栈结构练习

今天从刘汝佳的书上看到一个简单的栈的题目 有n节车厢从A方向驶入车站,按进站顺序编号1~n。现让这些火车按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,可以借助中转站C。C是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C。对于每个车厢,一旦从A移入C,就不能再……

阅读全文

KMP 串匹配

昨天一天没有写出代码来,惭愧惭愧,昨天在看红黑树和堆排序,可惜最后都没有能写出东西来,渐渐的感觉网络上的中文资料不太可以依赖了啊,要么就是没有,要么就是 google 出来排名在前面的都会写错,看来要么转向英文资料,要么转向纸质书了 今天参考这里,http://blog.csdn.net/v_july_v/…,写了个 KMP 串匹配,……

阅读全文

输出一个字符串的全排列

今天看到 http://blog.csdn.net/morewindo… 这里提出了一个问题 用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列, 如 abc 的全排列: abc, acb, bca, dac, cab, cba 想了想(想了好久啊,好久没有碰数据结构和算法了),觉得可以 dfs,这样来搞: #include <stdio.h> #include <stdlib.h……

阅读全文

算法复习之快速排序

快速排序这个自己想了一会,真的想不出来,还是查了资料,使用 C89 标准函数库有一个非常简单的写法,(维基上的不能跑,自己稍稍改了一下) #include <stdio.h> #include <stdlib.h> static int cmp(int *a, int *b) { return *a-*b; } int main() { int arr[10]={5, 3, 7, 4, 1, 9, 8, 6, 2}; qsor……

阅读全文

算法复习之冒泡排序与选择排序

基础丢的差不多了,是时候该重新捡起来,不然真的心虚啊,于是就从排序开始,上 poj 找基础的排序题居然没有,悲催,太低级了,最后在 hdu 上找到一个排序题,http://acm.hdu.edu.cn/showprob… 忘得差不多也有一个好处,就是可以自己从头再想,这次决定不看任何参考资料,就凭着模糊的印象,慢慢的把算法的思路先理……

阅读全文