亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

華為上機試題

時間:2024-09-20 19:40:10 華為認證 我要投稿

華為上機試題匯總

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

華為上機試題匯總

  地區(qū)一:

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

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

  相信大家第一反應應該是采用kmp,那么下面給出常規(guī)優(yōu)化kmp程序如下(采用字符串數(shù)組形式):

  #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. 高精度數(shù)相加,string addBigInt(string num1,string num2) 需要考慮正負數(shù)相加

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

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

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

  地區(qū)二:

  第一題【20分】:鑒定回文數(shù)組

  給定一個數(shù)組判斷是否是回文,這題沒什么好說明,直接看代碼:

  1 #include

  2 using namespace std;

  3

  4 bool isHuiWen(string s)

  5 {

  6 int length_s=s.length();

  7 int i=0;

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

  9 {

  10 if(s.at(i)!=s.at(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分】:求兩個整型數(shù)組的異集,即A+B-(A與B的交集)。

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

  這個問題的求解可以簡化為統(tǒng)計數(shù)組A B中任何字符的個數(shù),A+B-(A與B的交集)的結果就是統(tǒng)計僅僅出現(xiàn)過一次的數(shù)字:

  但是題目中沒有限制是字符,而是整形,數(shù)據(jù)量太大,這里借用了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 mi.clear();

  17 for(int i=0;i

  18 {

  19 mit=mi.find(a[i]);

  20 if(mit!=mi.end())

  21 {

  22 mit->second++;

  23 }

  24 else

  25 {

  26 mi.insert(make_pair(a[i],1));

  27 }

  28 }

  29

  30 for(i=0;i

  31 {

  32 mit=mi.find(b[i]);

  33 if(mit!=mi.end())

  34 {

  35 mit->second++;

  36 }

  37 else

  38 {

  39 mi.insert(make_pair(b[i],1));

  40 }

  41 }

  42

  43 for(mit=mi.begin(),i=0;mit!=mi.end();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中結果,題目僅僅讓我們判斷七種。但是這七種結果不具有繼承性,所以我們設計一個好的程序。

  那么就要統(tǒng)一他們的表現(xiàn)形式,下面是我的思路:

  排序

  判斷跳變次數(shù)

  進行篩選結果

  這樣可以較為統(tǒng)一的處理各種結果,參考程序如下:

  1 #include

  2 #include

  3 using namespace std;

  4

  5 struct Node{

  6 char type;//0 1 2 3四種花色,可以考慮用enum類型

  7 int v;//面值

  8 };

  9

  10 Node N[5]={

  11 {0,5},

  12 {0,9},

  13 {0,2},

  14 {0,9},

  15 {0,9},

  16 };

  17

  18 int n_of_v[5]={0,0,0,0,0};

  19

  20 bool myCMP(Node& a,Node& b)

  21 {

  22 return a.v>b.v;

  23 }

  24

  25 bool myNCMP(int a,int b)

  26 {

  27 return a>b;

  28 }

  29

  30 //獲取每個的個數(shù)

  31 int getN(Node* Nv)

  32 {

  33 int i=0;

  34 int j=0;

  35 int n=1;

  36 for(i=0;i<4;i++)

  37 {

  38 if(Nv[i].v==Nv[i+1].v)

  39 {

  40 n++;

  41 }

  42 else

  43 {

  44 n_of_v[j++]=n;

  45 n=1;

  46 }

  47 }

  48 n_of_v[j++]=n;

  49 return j;

  50 }

  51

  52 void showResult()

  53 {

  54 if(n_of_v[0]==4)

  55 {

  56 cout<<"4+1"<

  57 }

  58 else if(n_of_v[0]==3&&n_of_v[1]==2)

  59 {

  60 cout<<"3+2"<

  61 }

  62 else if(n_of_v[0]==3&&n_of_v[1]==1)

  63 {

  64 cout<<"3+1+1"<

  65 }

  66 else if(n_of_v[0]==2&&n_of_v[1]==2)

  67 {

  68 cout<<"2+2+1"<

  69 }

  70 else if(n_of_v[0]==2&&n_of_v[1]==1)

  71 {

  72 cout<<"2+1+1+1"<

  73 }

  74 else if(n_of_v[0]==1)

  75 {

  76 //可能是順子

  77 if(N[0].v==N[1].v+1

  78 &&N[1].v==N[2].v+1

  79 &&N[2].v==N[3].v+1

  80 &&N[3].v==N[4].v+1)

  81 {

  82 cout<<"不好意思,出了個順子"<

  83 }

  84 else

  85 cout<<"五張單牌"<

  86 }

  87 }

  88

  89 //傳入大小為5的結構體數(shù)組

  90 //進行判斷

  91 int getType(Node* Nv)

  92 {

  93 //首先排序

  94 sort(N,N+5,myCMP);

  95 //提取個數(shù)

  96 getN(Nv);

  97 sort(n_of_v,n_of_v+5,myNCMP);

  98

  99 //根據(jù)n_數(shù)組進行判斷

  100

  101 if(n_of_v[0]==4)

  102 {

  103 cout<<"四個一樣的哦"<

  104 }

  105

  106 return 1;

  107 }

  108 int main()

  109 {

  110 getType(N);

  111 showResult();

  112 return 1;

  113 }

【華為上機試題】相關文章:

華為Java上機考試題07-04

2016年華為上機考試題10-27

華為筆試題及答案11-01

word上機測試題及答案02-24

華為JAVA考試試題11-01

華為認證最新試題及答案08-28

excel上機測試題「附解答」07-28

2017華為筆試面試試題06-30

華為2017筆試試題07-06