華為上機考試有哪些考點呢?下面跟本站小編一起來看看吧!希望這些上機試題能幫助大家順利通過考試!
地區一:
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中結果,題目僅僅讓我們判斷七種。但是這七種結果不具有繼承性,所以我們設計一個好的程式。
那麼就要統一他們的表現形式,下面是我的思路: