算法设计策略是在设计一个算法的时候所用到的基础知识,一般的来说,一个完整的算法都是由一些细小的小算法构成的。
我这里把网络上和自己所学的一些知识总结出来,写出来,以备经常学习。
递归技术 —— 最常用的算法设计思想,体现于许多优秀算法之中
分治法 —— 分而制之的算法思想,体现了一分为二的哲学思想
模拟法 —— 用计算机模拟实际场景,经常用于与概率有关的问题
贪心算法 —— 采用贪心策略的算法设计
状态空间搜索法 —— 被称为“万能算法”的算法设计策略
随机算法 —— 利用随机选择自适应地决定优先搜索的方向
动态规划 —— 常用的最优化问题解决方法
这里先说
递归技术。
有很多问题,都是按照一定的规律不断的循环,只到符合某个条件问题中止,例如出名的Fibonacci数列..
我以下的所有例子都是C#实现的。
using System;
using System.Text;
class DemoMain{
public static void Main(string[] args){
Console.WriteLine("开始计算Fibonacci数列...");
for (int i=1;i<13;i++ ){
Console.WriteLine("F({0})={1}",i,F(i));
}
}
public static int F(int start) {
if(start<=2)return 1;
return F(start-1) + F(start-2);
}
}
运行输出结果:
开始计算Fibonacci数列...
F(1)=1
F(2)=1
F(3)=2
F(4)=3
F(5)=5
F(6)=8
F(7)=13
F(8)=21
F(9)=34
F(10)=55
F(11)=89
F(12)=144
其实在计算F(n)
if n>2
return F(n-1) + F (n-2)
else
return 1;
本话完毕。
天气:大雨,ccdot发表于2008-4-11 11:39:30,阅读了714次,共有个4回复.