華為2016校園招聘上機筆試題

2021-10-24 10:10:17 字數 2637 閱讀 4013

踩的坑:

q 1 5: 在測試樣例中有可能 a= 1>b=5, 而題目樣例並沒有體現這一點

用法記錄:

vector chengji:最大值的求法

踩的坑:

'\'要寫成'\\'
用法記錄:字元string的查詢:

rfind(), find()

字元的erase(),傳參同substr()

stable_sort()

// 記錄最多8條錯誤記錄

// 合併錯誤記錄:檔名 行數 同 計數累加

#include

#include

#include

#include

#include

using

namespace std;

bool

compare

(pair

int> a, pair

int> b)

intmain()

}}// errors全部儲存號,現在開始按照錯誤多少排序

// stable_sort的作用:

// 1.按照錯誤多的排前面

// 2.錯誤等的,按照push_back()的順序/相對順序保持不變,這是和sort比的優勢

stable_sort

(errors.

begin()

, errors.

end(

), compare)

;// 然後輸出前面8條,且檔案名字太多要刪除

int idx =0;

while

(idx <

8&& errors.

size()

) cout << errors[idx]

.first <<

' '<< errors[idx]

.second << endl;

idx++;}

return0;

}

撲克牌的大小

主要解題思路:

問題1:如何分辨兩組牌是否為同乙個型別?

答案1:可以通過輸入字串的間隔符(空格數)是否相同判斷。

問題2:如何判斷單個牌的大小順序?

答案2:組乙個字串「345678910jqka2jokerjoker」,通過判斷對應單個字元或字串在該字串的位置進行大小比較。

手牌比較過程:

手牌的型別相同(單對單,對對對,三對三,四對四,順子對順子):

a. 直接比較第一張手牌的大小即可;

手牌的型別不同(分為三種情況):

a. 存在王炸,輸出王炸;

b. 存在炸彈,輸出炸彈;

c. 否則輸出error;

用法記錄:

string:

find()與substr()可以在某種程度上實現split()功能

count功能

// 輸入手牌:個子、對子、順子、三個、炸彈、對王中的一種

主要思路:

用佇列實現迴圈的刪除

//0 1 2 3 4 5 6 7

// 0 1 3 4 6 7

// 用佇列模擬,隊首取數,用乙個計數器計數,隔2個刪乙個,其他的重新放到隊尾

#include

#include

using

namespace std;

intmain()

// count 計數

int count =0;

while

(q.size()

!=1)else

}int c = q.

front()

; cout << c << endl;

}return0;

}

其他華為筆試題:

01

華為2016校園招聘上機筆試題

華為2016校園招聘上機筆試題 撲克牌大小 已通過測試,通過。思路 主要是將比較的左右牌,進行區分開來 首先將左右的牌轉化為字串,10 佔兩個字串,需要特殊處理 將 10 轉化為 1 這樣可以通過左右兩邊字元的個數多少進行區分 include include 定義輸出的字元陣列 char print...

華為2016校園招聘上機筆試題

老師想知道從某某同學當中,分數最高的是多少,現在請你程式設計模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.思路 區間最大值,點更新。這裡是最簡單的,其實還有區間求和,區間最大值,區間最小值,點更新,區間更新。可以用線段樹 樹狀陣列 rmq 這裡只簡單說明一下區間最大值和點更新,剩餘的放在下...

華為2013校園招聘上機筆試題

上機時間兩小時,3道題 1 字串轉換 問題描述 將輸入的字串 字串僅包含小寫字母 a 到 z 按照如下規則,迴圈轉換後輸出 a b,b c,y z,z a 若輸入的字串連續出現兩個字母相同時,後乙個字母需要連續轉換2次。例如 aa 轉換為 bc,zz 轉換為 ab 當連續相同字母超過兩個時,第三個出...