各类算法的一个例子

用算法实现一个正整数的分解质因数。如90=2*3*3*5。

解:

1、用该正整数除以除数(初始值为2)后跳到2;

2、如果能整除且结果不等于1则跳到3,如果不能整除则除数+1后跳到1,如果能整除且结果为1则跳到4;

3、该正整数等于自身除以除数,且记录下当前除数后跳到1;

4、输出之前记录的除数即可。

 

 一串首尾相连的珠子共m个,其中有n中颜色,求出包含全部这n种颜色的最短的串。

解:

两个指针,一个指向头,一个指向尾

从任意一个珠子开始,将头指针指向开始的地方,尾指针往后找,直到找到所有颜色为止。开一个长度为n的数组,在找的过程中记录颜色i最迟出现的位置。找到第一个满足所有颜

色的串之后,头指针移动,去掉开头的珠子,判断目前头尾指针所包含的珠子是否拥有n种颜色就用刚才开的那个数组判断。如果头指针需要去掉一个后面没有的颜色的珠子,那么

需要尾指针向后移动,直到找到这个颜色为止。这样,当头指针走过一圈之后,各种符合n种颜色的串长度可以通过比较记录下最小值了。

 

求一棵2叉数的高度。

解:

用递归解决。递归函数:如果为空则返回0,非则返回左右子树中较高的结果。最后结果+1。

待续... 

posted @ 2014-02-28 13:28  不吃早饭好不好  阅读(469)  评论(0编辑  收藏  举报