随笔分类 -  algorithm

摘要:前一阵在bbs上看到的一道面试题,今日闲来无事,就写了个小小程序试了一下。想法就是先计算要打印的行数和列数的总和(totalSteps),然后很容易就会发现totalSteps % 4 = 0 从左到右打印最上面一行元素 (己打印的除外)totalSteps % 4 =1 从上到下打印最右面一列元素totalSteps % 4 =2 从右到左打印最下面一行元素totalSteps % 4 =3 从... 阅读全文
posted @ 2007-12-20 14:05 芭蕉 阅读(751) 评论(0) 推荐(0) 编辑
摘要:辗转相除法(欧几里德算法)算是求最大公约数(greatest common divisor gcd)比较经典而且简单的算法了,其理论依据如下: if y=0, gcd(x,y) = x if x>=y>0 gcd( x,y) = gcd( y, x mod y) 简单证明如下,设x = y*p +r ( r = x mod y),如果存在数q整除x, y, 也即 q|x = q|(y*p +r)... 阅读全文
posted @ 2007-10-06 18:34 芭蕉 阅读(443) 评论(0) 推荐(0) 编辑
摘要:逆转单向链表是一个很基础很常见的问题,可惜在我最近面试的几个面试者中还是发现有的人写不好这个程序或者写的有问题.请看下面的实现,这也是大多数人聪明的人会想到的实现方法 typedef struct Node{ int data; struct Node *next;}node; elementT *reverse(Node *p,Node *head){ if((!p)|... 阅读全文
posted @ 2007-04-29 14:52 芭蕉 阅读(1524) 评论(1) 推荐(0) 编辑
摘要:问题如下: 给定字符串,比如char *s = "abc",请用里面的字符做全排列,即求'a','b,'c'的全排列,其结果应该是"abc","acb","bac","bca","cab","cba"一共六种. 这个问题比较容易想到的解决方案是使用递归,要求以'a'开头的"abc"的全排列,可以先求"bc"的全排列,然后再加上'a'即可,"bc& 阅读全文
posted @ 2007-04-29 14:51 芭蕉 阅读(2508) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示