Algorithms
laciqs
这个作者很懒,什么都没留下…
展开
-
《算法竞赛入门经典》勘误表
0. 前言:“要学好C语言,绝非熟悉语法和语义这么简单”不太正确,语言是语言,算法是算法,不能说算法厉害了才算把语言学好了(作者说如果把”学好“改成”用好“就更明白了)。“学习C语言的过程是痛苦的”,有点吓人,其实C语言是很好学的……也许作者逻辑思维太厉害,所以对语法这种语文类型的内容不太敏感(作者对此回复说对语言并不是不敏感,学习C语言的过程是痛苦的是学生们的感慨,只是照搬)。1.原创 2011-07-25 17:50:36 · 3528 阅读 · 2 评论 -
替换密码
代码写得比较trick……#include #include #include void exchange(char *s, const char *sigema) { while (*s) { // 保持原大小写 *s = isupper(*s) ? sigema[*s-'A'] : tolower(sigema[原创 2012-06-09 21:35:06 · 1062 阅读 · 0 评论 -
凯撒密码
#include #include void caesar(char *s, int n){ while (*s) { *s += n; s++; }}int main(void){ char s[] = "MOMOTARO"; caesar(s, 3); puts(s); return 0;}原创 2012-06-09 21:25:08 · 1658 阅读 · 0 评论 -
An Introduction to Recursion笔记
在TopCoder中的Algorithm Tutorial看到一套讲解递归的文章:An Introduction to Recursion, Part 1An Introduction to Recursion, Part 2感觉很不错,做一下笔记:Some key considerations in designing a recursive algorithm:原创 2011-10-23 17:37:46 · 1044 阅读 · 2 评论 -
到底该如何学习数据结构?
昨天买了本《大话数据结构》,之后就开始看。数据结构给我的印象就是一大堆code,自己实现很麻烦,而且很容易出detail errors,望着书上的代码,我在想,难道我真要把他们都能独自写下来?其实想想怎么也是不必的,说最低级的要求,工作中copy一下代码然后会调用function原创 2011-08-19 17:53:41 · 9731 阅读 · 7 评论 -
《算法导论》第2章笔记(不定期更新中)
2.1 插入排序插入排序的思想:把列表分成一个有序列表和一个无序列表,每次选取无序列表中的第一个元素,并插入到有序列表的相应位置。练习2.1-3:循环不变式:在A[1...i-1]中不存在v。初始化:在第一次迭代之前,i=1,A[1...0]中没有任何原创 2011-10-16 16:14:54 · 2042 阅读 · 1 评论 -
到底该如何学习算法?
俗话说“磨刀不误砍柴工”,虽然我已经开始砍柴,但磨刀还是在继续。除了四处搜罗算法书外,我也看了N多前辈的经验之谈,大到刘未鹏的文章,小到网友们对多本算法书的评论,我都有所吸收,也愈加感到知其所以然的必要性。很多人学习算法都特别重视代码,不管是伪代码也好还是具体语言代码也好,然原创 2011-10-16 15:30:18 · 15290 阅读 · 5 评论 -
黑白图像显示栈版
《算法竞赛入门经典》中的例子,书中只提供了递归栈的版本,让读者试着改成显示栈的。不过我改了半天也没改成,想起《Linux C编程一站式学习》中有深度优先搜索一节过去就没看懂,于是就参考了那一节,这次不仅看懂了,显示栈的版本也写成了,看来黑白图像和走迷宫这两个例子真是很适合结合起来原创 2011-09-24 16:25:59 · 1170 阅读 · 0 评论 -
解读御坂美琴みさか的菱形打印程序——谈如何学习算法
百度C语言吧主御坂美琴みさか的《C语言循环的小艺术》很久以前我就复制下来收藏了,不过一直没有研究。昨天Uval的AOAPC I: Beginning Algorithm Contests (Rujia Liu)做到Triangle Wave的时候又看到了这种对称图形,虽然用那种“原创 2011-08-05 17:23:05 · 3814 阅读 · 0 评论 -
折半查找思想应用——计算平方根和x的n次幂
double mysqrt(double y){ double start = 0, mid, end = y; while (fabs(mid*mid - y) >= 0.001) { mid = (start + end) / 2; if (mid*m原创 2011-07-16 16:23:21 · 1216 阅读 · 2 评论 -
第k小的元素
#include #define LEN 8int a[LEN] = { 2, 8, 7, 1, 3, 5, 6, 4 };void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp原创 2011-07-16 14:32:49 · 607 阅读 · 0 评论