算法设计一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
院系:计算机科学学院专业、年级: 08软工
课程名称:算法设计
班级:(2)班
指导教师:李子茂
2010年12月8 日
08软工:实验类别:综合型
程序用时1.321
根据时间算出最大斐波那契数:
#include
#include
#include
using namespace std;
#define CLOCKS_PER_SEC ((clock_t)1000) ///////////////递归算法/////////////////////////////
int F(int n)
{
int i;
if(n<=1)
i=n;
else
i=F(n-1)+F(n-2);
return i;
}
/////////////////矢代算法/////////////////////////////
int Fit(int n)
{
int s,a=1,b=0;
if(n<=1)
s=n;
else
for(int i=2;i<=n;i++)
{
s=a+b;
b=a;
a=s;
}
return s;
}
/////////////////////公式算法//////////////////////////// int formula(int n)
{
double a,s,d=0;
int b=-1,c=-1;
a=(1+sqrt(5.0))/2;
s=a;
if(n==0)
b=0;
if(n>=1)
{
for(int i=1;i { s=s*a; } s=s/sqrt(5.0); c=static_cast d=(s-c)*10; if(d>=5) c=c+1; b=c; } return b; } ///////////////////矩阵算法///////////////////////// int matrix(int n) { const int a[2][2]={1,1,1,0}; int b[2]={1,1}; int c[2]={0,0}; int s=-1; if(n==0) s=0; if(n==1) s=1; if(n>1) { for(int i=1;i { c[0]=a[0][0]*b[0]+a[0][1]*b[1]; c[1]=a[1][0]*b[0]+a[1][1]*b[1]; b[0]=c[0]; b[1]=c[1]; } s=c[1]; } return s; } ///////在规定时间内用递归能算的最大斐波那契数//////////// void maxsum() { int answer=0,n=0; double _time,duration=0,x; // 测量一个事件持续的时间 clock_t start, finish; do { cout<<"\n请输入时间(秒):"; cin>>_time; if(_time<=0) cout<<"\n请输入正确的时间(秒),谢谢!"; }while(_time<=0); x=_time; while(_time>0) { start = clock(); answer= F(n);//使用递归算法 finish = clock(); duration=static_cast n++; } cout<<"\n在时间(秒)"< < } ////////////////////////主函数/////////////////////////// void myprint() //菜单函数 { cout<<"\n********************************************\n"; cout<<"* 选择1 使用递归算法计算斐波那契数*\n"; cout<<"* 选择2 使用矢代算法计算斐波那契数*\n"; cout<<"* 选择3 使用公式算法计算斐波那契数*\n"; cout<<"* 选择4 使用矩阵算法计算斐波那契数*\n"; cout<<"* 选择5 使用递归算法计算规定时间的斐波那契数*\n"; cout<<"* 选择6 退出程序*\n"; cout<<"********************************************\n"; } void new_line() //检查输入函数 { char ch; do { cin.get(ch); }while(ch!='\n'); } int main() //主函数 { int a; char x; int n; double duration=0; // 测量一个事件持续的时间 clock_t start, finish; for(;;) { myprint();//输出菜单函数 cin.get(x); //读入选项 switch(x) { case '1': cout<<"\n请输入你要计算第几个斐波那契数:"; cin>>n; new_line(); start = clock(); a= F(n);//使用递归算法 finish = clock(); duration=static_cast