一個騰訊筆試題
採用C編程,代碼如下:
#include
#define MAX 500
struct STACK
{
int m;
int n;
};
struct STACK S[MAX];
int akm1(int m, int n);
int akm(int m, int n);
void main()
{
int m,n;
int a,b;
printf("please input two data (m,n)n");
scanf("%d,%d",&m,&n);
a=akm (m,n);
b=akm1(m,n);
printf("n recursion=%d non-recursion=%dn",a,b);
}
// 遞歸的模擬
int akm(int m, int n)
{
if(m*n==0)
return m+n+1 ;
else
{
return akm(m-1, akm(m,n-1));
}
}//akm
//非遞歸算法: int akm1(int m, int n)
{
int top =0;
S[top].m=m; /*S[MAX]爲附設棧,top爲棧頂指針*/
S[top].n=n;
if (m*n==0) //m+n+1;
return m+n+1;
do //f(m-1,f(m,n-1)) S[i] save m and n-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--; //when n=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);
return S[top].n+1; //m*n!=0;
}//akm1
待解決問題,當m逐漸增大時,棧很快便會溢出,得不出結果。只有當m值較小時,才能計算出結果。
下面是模擬騰訊給出的樣式 改進的'程序:
int akm2(int m, int n)
{
int top ,f;
int ST[MAX]={0}; /*S[MAX]爲附設棧,top爲棧頂指針*/
top=0;
if (m*n==0)
return m+n+1;
do //f(m-1,f(m,n-1)) S[i] save m ; 模擬遞歸
{
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=f;
}
}
while(top!=0||ST[top]!=0);
return f+1; //m*n!=0; 返回值
}
-
關於北京高中會考首次取消統一筆試的文章
獨立完成一件作品、寫一份產品說明或小論文,參加新課改的高二學生將可拿到高中通用技術課的會考學分。記者昨天瞭解到,高中會考科目,取消統一筆試西城區這一探索在本市尚屬首次。作爲新課改課程的一大亮點,通用技術課的開設旨在增加學生的動手和實踐能力,學生可接觸...
-
青島二中今年將增筆試環節
近日,青島二中會考開放日舉辦,今年直升考將第一次增筆試環節,因今年直升生的政策還未發佈,要以市教育局公佈的爲準。另外,二中老師還就“二中杯”邀請賽做競賽指導,吸引了1500多名學生報名。3月26日上午,青島二中舉行會考開放日暨“二中杯”邀請賽競賽指導,吸引了近千...
-
花旗筆試筆試經驗分享
今天上午9:00,北京長安大廈筆試。一共7人,好像聽hrjj說應該一共10人,有3人沒來。7人中,2個北大,3個清華,一個從英國唸了2個碩士學位的,還有我一個,北工大的,也許他們都沒聽說過,不過沒事,反正大家的題一樣。第一部分,25分鐘30道題,全英文。是關於英國一家公司的各種數據,只要...
-
河北公衛醫師資格綜合筆試考試
日期時間考試科目9月12日(星期六)上午9:00—11:30第一單元下午14:00—16:30第二單元9月13日(星期日)上午9:00—11:30第三單元下午14:00—16:30第四單元考前一天準備和考中注意事項:1、重點複習公共科目和基礎科目。內外婦兒是重點不假,但輕視甚至放棄公共科目是絕對錯誤的,往...