各类算法的一个例子
用算法实现一个正整数的分解质因数。如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。
待续...