華爲上機試題彙總

學識都 人氣:9K

華爲上機考試有哪些考點呢?下面跟本站小編一起來看看吧!希望這些上機試題能幫助大家順利通過考試!

華爲上機試題彙總

地區一:

1. 編寫函數string deletestring(string str,string sub_str)從str中查找匹配的字符串sub_str,採用最左匹配,且輸出形式爲str+"_"+匹配的次數

題目一的意思應該是求解字符串str中子字符串sub_str的個數,同時輸出形式採用原字符串+"_"匹配次數

相信大家第一反應應該是採用kmp,那麼下面給出常規優化kmp程序如下(採用字符串數組形式):

#include

using namespace std;

int next[100];

void getnext(char b[])

{

int i=1,j=0; //ij

next[1]=0;

while(i<=strlen(b))

{

if(j==0||b[i-1]==b[j-1])

{

i++;

j++;

next[i]=j;

}

else j=next[j]; //

}

}

int kmp(char a[],char b[])

{

int i=1,j=1; //i j

while(i<=strlen(a)&&j<=strlen(b))

{

if(j==0||a[i-1]==b[j-1])

{

i++;

j++;

}

else j=next[j];

}

if(j>strlen(b))

return i-strlen(b);

else return 0;

}

2. 高精度數相加,string addBigInt(string num1,string num2) 需要考慮正負數相加

這道題是高精度計算中的最最簡單的一題:

目的是模擬人手工運算的過程,進而進行結果的現實;

參考代碼(編譯環境:Visual Studio 6):

地區二:

第一題【20分】:鑑定迴文數組

給定一個數組判斷是否是迴文,這題沒什麼好說明,直接看代碼:

1 #include

2 using namespace std;

3

4 bool isHuiWen(string s)

5 {

6 int length_s=th();

7 int i=0;

8 for(i=0;i<(length_s>>1);i++)

9 {

10 if((i)!=(length_s-1-i))

11 return false;

12 }

13 return true;

14 }

15

16 int main()

17 {

18 string ss="iloveevolis";

19 if(isHuiWen(ss))

20 {

21 cout<<"Huiwen"<

22 }

23 else

24 {

25 cout<<"No"<

26 }

27 return 1;

28 }

第二題【30分】:求兩個整型數組的異集,即A+B-(A與B的交集)。

這裏只是提供我的一個思路:

這個問題的求解可以簡化爲統計數組A B中任何字符的.個數,A+B-(A與B的交集)的結果就是統計僅僅出現過一次的數字:

但是題目中沒有限制是字符,而是整形,數據量太大,這裏借用了map操作,進行簡化內存:

針對這個思路程序如下:

1 #include

2 #include

3 using namespace std;

4

5 map mi;

6 map::iterator mit;

7 int A[10]={1,2,3,4,5,6,3,2,8,9};

8 int B[10]={8,7,6,5,9,0,3,4,8,40};

9 int R[20];

10 int RC=0;

11

12

13 void getAB(int* a,int na,int* b,int nb)

14 {

15 string re;

16 r();

17 for(int i=0;i

18 {

19 mit=(a[i]);

20 if(mit!=())

21 {

22 mit->second++;

23 }

24 else

25 {

26 rt(make_pair(a[i],1));

27 }

28 }

29

30 for(i=0;i

31 {

32 mit=(b[i]);

33 if(mit!=())

34 {

35 mit->second++;

36 }

37 else

38 {

39 rt(make_pair(b[i],1));

40 }

41 }

42

43 for(mit=n(),i=0;mit!=();mit++)

44 {

45 if(mit->second==1)

46 {

47 R[i++]=mit->first;

48 }

49 }

50 RC=i;

51 }

52

53 int main()

54 {

55 getAB(A,10,B,10);

56 for(int i=0;i

57 {

58 cout<

59 }

60 return 1;

61 }

第三題【50分】:判定德州撲克的牌型。給5張牌,返回它的牌型,4個的,3個+對子,順子,3個+2個單張,2對,1對,其他。

德州撲克我還是很喜歡玩的,其中牌型牌型可以有近10中結果,題目僅僅讓我們判斷七種。但是這七種結果不具有繼承性,所以我們設計一個好的程序。

那麼就要統一他們的表現形式,下面是我的思路: