算法设计一

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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(s);

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(finish - start)/CLOCKS_PER_SEC; _time=_time-duration;

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(finish - start)/CLOCKS_PER_SEC;

cout<<"\n你要计算第"<

cout<

相关文档
最新文档