歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 2014木瓜移動校園招聘筆試題

2014木瓜移動校園招聘筆試題

日期:2017/3/1 9:51:42   编辑:Linux編程

2014木瓜移動校園招聘筆試題

1.有A到J十個人手拉手構成一個環,其中A和B不相鄰,問一共有多少種排列方式?

解:基本的環排列算法。公式:N!/N(N 即為參與排列的人)

就本題而言,首先十個人環排列A/10 ,然後將AB當成一個人進行環排列A*A/9

排除AB相鄰的即為答案:A/10 - A*A/9

2.代碼的優化,給出下一段代碼,請做出最好的優化

int f(n)
{
if(n<=4)
return n*n;
else
{
return f(n-4)*f(n-1) - f(n-2)*f(n-2);
}
}

3.有兩枚硬幣AB,其中A為正常硬幣,B的兩面都是人頭,隨機從AB中選出一枚,並拋向空中。求:1)若硬幣落下後是人頭,則是A的概率;2)連續拋n次,落下後都是人頭,求是A的概率。

解答:條件概率

1)設拋一次,硬幣落下是人頭為M事件;隨機選出的硬幣是A的為N事件

p(N|M)=p(MN)/p(M)=/=

2)設拋n次,硬幣落都是人頭為Mn事件

p(Mn)=()^n+(備注:“+”前為A硬幣的概率,“+”後為B硬幣的概率)

p(N|Mn)=p(N·Mn)/p(Mn)=1/(1+2^n)

4.什麼是同步IO和異步IO,各有什麼優缺點?什麼情況下用同步IO較好,什麼時候用異步IO較好?

5.給定一個字符串,求串中字典序最大的子序列

分析:字典序最大的子序列是這樣構造的:設字符串為a0a1.....an-1。首先在a0a1.....an-1找到值最大的字符ai,然後在剩余的ai+1....an-1中值最大的字符aj,然後在剩余的aj+1....an-1中值最大的字符ak.....直到字符串的長度為0。則aiajak...即為答案

容易想到,an-1一定在所求串中,因此一個好的方法就是從an-1開始向前搜索,當當前值大於或等於子序列中首字符的值時,就將其加入串首,直到搜索完整個串為止。

代碼:


bool get_largest_sub(const char *src,char* &largest_sub)

{

if (src==NULL)

{

return false;

}else

{

int sLen=strlen(src);

if (largest_sub==NULL||strlen(largest_sub)<sLen)

{

if (largest_sub==NULL)

{

largest_sub=(char *)malloc(sLen+1);

}else

{

largest_sub=(char*)realloc(largest_sub,sLen+1);

}

}

largest_sub[sLen-1]=src[sLen-1];

int j=sLen-1;

for (int i=sLen-2;i>=0;i--)

{

if (src[i]>=largest_sub[j])

{

largest_sub[--j]=src[i];

}

}

int p,q;

for (p=0,q=j;p<sLen&&q<sLen;p++,q++)

{

largest_sub[p]=largest_sub[q];

}

largest_sub[p]='\0';

return true;

}

}

Copyright © Linux教程網 All Rights Reserved