一个腾讯笔试题范文_第1页
一个腾讯笔试题范文_第2页
一个腾讯笔试题范文_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一个腾讯笔试题范文采用C编程,代码如下:

#include

#defineMAX500

structSTACK

{

intm;

intn;

};

structSTACKS[MAX];

intakm1(intm,intn);

intakm(intm,intn);

voidmain()

{

intm,n;

inta,b;

printf("pleaseinputtwodata(m,n)n");

scanf("%d,%d",&m,&n);

a=akm(m,n);

b=akm1(m,n);

printf("nrecursion=%dnon-recursion=%dn",a,b);

}

//递归的模拟

intakm(intm,intn)

{

if(m*n==0)

returnm+n+1;

else

{

returnakm(m-1,akm(m,n-1));

}

}//akm

//非递归算法:intakm1(intm,intn)

{

inttop=0;

S[top].m=m;/*S[MAX]为附设栈,top为栈顶指针*/

S[top].n=n;

if(m*n==0)//m+n+1;

returnm+n+1;

do//f(m-1,f(m,n-1))S[i]savemandn-1;递归的模拟

{

while(S[top].m)//m-->0

{

S[top].n=S[top].n-1;

while(S[top].n)//n-->0

{

top++;

S[top].m=S[top-1].m;

S[top].n=S[top-1].n-1;

}

S[top].m--;//whenn=0,m=m-1.

S[top].n=S[top].m+2;//n=m+2

}

if(top>0)//m=0,f(m,n)

{

top--;

S[top].m--;

S[top].n=S[top+1].n+1;

}

}

while(top!=0||S[top].m!=0);

returnS[top].n+1;//m*n!=0;

}//akm1

待解决问题,当m逐渐增大时,栈很快便会溢出,得不出结果。只有当m值较小时,才能计算出结果。

下面是模拟腾讯给出的样式改良的'程序:

intakm2(intm,intn)

{

inttop,f;

intST[MAX]={0};/*S[MAX]为附设栈,top为栈顶指针*/

top=0;

if(m*n==0)

returnm+n+1;

do//f(m-1,f(m,n-1))S[i]savem;模拟递归

{

if(m*n!=0)//当m*n!=0时,进行压栈处理

{

ST[top++]=m;

n--;

}

else//m*n=0

{

f=m+n+1;

if(top>0)

{

ST[top]=ST[--top]-1;//出栈操作

}

m=ST[top];//修改m,n的值

n=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论