2012 人民搜尋 實習生招聘 筆試題

2021-06-06 14:03:22 字數 1990 閱讀 3533

1、列印漢諾塔移動步驟,並且計算複雜度。

方法是遞迴,將n-1層移到中間柱,然後將最底層移到目標柱,然後再把n-1層移到目標柱。

f(n) = 2f(n-1) + 1 , f(1) = 1

f(n) + 1 = 2( f(n-1) + 1 )

f(n) = 2^n - 1

t(n) = o(2^n);

2、計算兩個字串的是否相似(字元的種類,和出現次數相同)

先比較strlen,如果不相等,直接返回false

根據ascii碼建表 str[255],然後比較字元的出現次數,如有乙個不同,返回false。

然後比較位置吧。有乙個不同,就返回true。

3、定義二叉樹,節點值為int,計算二叉樹中的值在[a,b]區間的節點的個數。

任意一種方式遍歷二叉樹,如果值在 [a,b] 之間,計數器+1

4、一條路有k可坑,每次能跳平方數步長(1 4 9 16。。),不能跳到坑里,從a跳到b最少幾步?(

動態規劃題

)動態轉移方程

f(n) = min( f(大於n的第乙個平方數 -n) ,f(n- 小於n的第乙個完全平方數) +1 )

【 補充 ing

在乙個座標軸上, 給定兩個點,乙個起點,乙個終點,起點有乙個方塊,方塊可以左右移動,但是移動的長度只能是平方數長(1,4,9,16 ••••) ,同時座標軸上還有洞,移動的過程中不能越過這個洞,不然會掉下去,問 由起點到終點 至少需要多少次移動,不能到達返回-1】

5、給乙個整數陣列,求陣列中重複出現次數大於陣列總個數一半的數。

int morethanhalfnum(int *a , int n )

else if(a[i] != num)

--times;

else

++times;

} k = 0;

for(i = 0 ; i < n ; ++i)

if(k*2 <= n)

return -1; //沒有找到

else

return num; //找到

}

6、乙個128bits 的二進位製流,要求找出 裡面包含 某8bits 二進位製流的數目。

如果只是乙個128bit的流,那就用int對其某個位元組,然後移位比較,然後int向後移動3個位元組,繼續移位比較。如果是很多128bit的流,可以模仿kmp,用上面的方法,每次取int的8bit和目標8bit進行and操作,結果只有256種可能,事先存乙個256的表,查表決定向後跳躍的bit數。

7、交換整型的奇數字和偶數字

int swapoddevenbit(int x)  

int main(void)

8、試著用最小的比較次數去尋找陣列中的最大值和最小值。

解法一:

掃瞄一次陣列找出最大值;再掃瞄一次陣列找出最小值。

比較次數2n-2

解法二:

將陣列中相鄰的兩個數分在一組, 每次比較兩個相鄰的數,將較大值交換至這兩個數的左邊,較小值放於右邊。

對大者組掃瞄一次找出最大值,對小者組掃瞄一次找出最小值。

比較1.5n-2次,但需要改變陣列結構

解法三:

每次比較相鄰兩個數,較大者與max比較,較小者與min比較,找出最大值和最小值。

方法如下:先將一對元素互相進行比較,然後把最小值跟當前最小值進行比較,把最大值跟當前最大值進行比較。因此每兩個元素需要3次比較。如果n為奇數,那麼比較的次數是3*(n/2)次比較。如果n為偶數,那麼比較的次數是3n/2-2次比較。因此,不管是n是奇數還是偶數,比較的次數至多是3*(n/2),具體的**如下:

void getmaxandmin(int *arr , int n , int &max , int &min)

else

else

i += 2; }

for( ; i < n ; i += 2)

else

}}

2012 人民搜尋 實習生招聘 筆試題

1 列印漢諾塔移動步驟,並且計算複雜度。方法是遞迴,將n 1層移到中間柱,然後將最底層移到目標柱,然後再把n 1層移到目標柱。f n 2f n 1 1 f 1 1 f n 1 2 f n 1 1 f n 2 n 1 t n o 2 n 2 計算兩個字串的是否相似 字元的種類,和出現次數相同 3 定義...

2012 人民搜尋 實習生招聘 筆試題

1 列印漢諾塔移動步驟,並且計算複雜度。方法是遞迴,將n 1層移到中間柱,然後將最底層移到目標柱,然後再把n 1層移到目標柱。f n 2f n 1 1 f 1 1 f n 1 2 f n 1 1 f n 2 n 1 t n o 2 n 2 計算兩個字串的是否相似 字元的種類,和出現次數相同 先比較s...

2012 人民搜尋 實習生招聘 筆試題

1 列印漢諾塔移動步驟,並且計算複雜度。方法是遞迴,將n 1層移到中間柱,然後將最底層移到目標柱,然後再把n 1層移到目標柱。f n 2f n 1 1 f 1 1 f n 1 2 f n 1 1 f n 2 n 1 t n o 2 n 2 計算兩個字串的是否相似 字元的種類,和出現次數相同 先比較s...