轉自:http://blog.csdn.net/haoxing168/archive/2009/10/18/4694620.aspx
一。簡述鏈表和數組各自的優缺點。
二。程序題,程序大概如下,a爲一個字符串數組,字符串中每個字符都是介於'a'到'z'的小寫字母,且字符串長度不超過20。
(a)描述bbb函數的功能(可用一句話)。
(b)假設N=7,且a={"cafe","baidu","recuit","thisone","iseasy","*******","*****"}(有兩個字符不記得了....),寫出輸出結果。
(c)寫出bbb函數的時間複雜度(用N表示)。
(d) 好像是bbb函數優化提高算法效率之類的。
int aaa(char* b1,char* b2)
{
char g[26];
int i;
for(i=0;i<26;++i)
g=0;
for(i=0;i<26;++i)
g[b1-'a']++;
for(i=0;i<26;++i)
g[b2-'a']--;
for(i=0;i<26;i++)
{
if(g)
return 0;
}
return 1;
}
int bbb(char a[N][20])
{
int f[N];
int i,j;
for(i=0;i<N;i++)
f=0;
for(i=0;i<N;i++)
{
if(!f)
f=1;
printf("%s",a);
for(j=i+1;j<N;j++)
{
if(aaa(a,a[j]))
{
f[j]=1;
printf("%s",a[j]);
}
printf("/n");
}
}
}
三。魔術師抽出16張牌,紅心A,4,Q;黑桃J,8,4,7,2,3;草花K,4,Q,5,6;方塊A,5。然後魔術師從中隨意抽出一張牌,叫兩觀衆上去,將點數告訴了觀衆甲,將花色告訴了觀衆乙。
甲:我不知道這張牌。
乙:我知道你不知道這張牌。
甲:我知道這張牌了。
乙:我也知道了。
請問從這四句話中你能判斷是哪一張牌?
四。用遞歸和非遞歸的方法寫出樹的先序遍歷,需爲可執行的代碼。
給出結點定義
struct tree
{
int data;
tree *left, *right;
};
typedef struct tree node;
typedef node *Bitree;
爲了方便coding,給出Stack棧操作,push(pNode);pop();
五。一個M*M的矩陣A,一個字符串數組S,比較S中的字符串是否在A中的連續對角線序列中出現。
譬如一個4*4的矩陣 1 2 3 4
a b c d
5 6 7 8
e f g h
則其連續對角線從左算:1 2 a 5 b 3 4 c 6 e f 7 d 8 g h
或 1 a 2 3 b 5 e 6 c 4 d 7 f g 8 h
從右算:4 3 d 8 c 2 1 b 7 h g 6 a 5 f e
或 4 d 3 2 c 8 h 7 b 1 a 6 g f 5 e
(a)大概是寫出優化高效的算法,不一定要程序,可用流程圖或者文字描述,簡述算法原理,計算時間複雜度。
(b)當矩陣很大到無法加載到內存,寫出解決辦法。
六。給出了一些條件,具體忘了,大概有這些:
1.一個系統要接受用戶請求,用戶請求爲32字節,其中第一字節爲優先級,後31字節爲請求內容,是字符格式。
2.由於系統處理複雜,所以同時處理的請求有限,但是還好系統可以保存請求,並且請求過的請求,再次請求可以直接返回,不用處理
3.請求優先級總共16級,要求高級的請求總是先於低級的請求,同一級的請求中,請求次數多的現處理
問題是:
(a)基於此要寫一個任務管理調度器的核心算法,
(b)寫出數據結構
(c)如果任務管理調度器的容量設計爲20萬,請計算需要的空間。