華為2016校園招聘 簡單錯誤記錄

2021-07-15 06:26:23 字數 1704 閱讀 9030

[程式設計題]簡單錯誤記錄

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的**所在的檔名稱和行號。 

處理:1.記錄最多8條錯誤記錄,對相同的錯誤記錄(即檔名稱和行號完全匹配)只記錄一條,錯誤計數增加;(檔案所在的目錄不同,檔名和行號相同也要合併)

2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元;(如果檔名不同,而只是檔名的後16個字元和行號相同,也不要合併)

3.輸入的檔案可能帶路徑,記錄檔名稱不能帶路徑

輸入描述:

一行或多行字串。每行包括帶路徑檔名稱,行號,以空格隔開。

檔案路徑為windows格式

如:e:\v1r2\product\fpgadrive.c 1325

輸出描述:

將所有的記錄統計並將結果輸出,格式:檔名**行數數目,乙個空格隔開,如: fpgadrive.c 1325 1 

結果根據數目從多到少排序,數目相同的情況下,按照輸入第一次出現順序排序。

如果超過8條記錄,則只輸出前8條記錄.

如果檔名的長度超過16個字元,則只輸出後16個字元

輸入例子:

e:\v1r2\product\fpgadrive.c 1325

輸出例子:

fpgadrive.c 1325 1

用結構體存放記錄,結構體記錄檔名path,行號line,次數和出現順序index

先統計所有輸入,存放進map,key=path+" "+line

再將map依據index拷貝到乙個vector中,再根據要求排序。必須使用穩定的排序演算法,這裡採用快速插入排序

最後輸出前8個

#include #include #include #include using namespace std;

struct record

;void sort(vector&records)

else

records[path + " " + line].n++;

} //i就是當前記錄的個數

vectorrecordvec(i);

for (auto p : records)

recordvec[p.second.index] = p.second;

sort(recordvec);

i = i>8 ? 8 : i;

for (int j = 0; j

#include #include #include #include #include using namespace std;

struct record

;bool compare(record a, record b)

int main()

else

records[path + " " + line].n++;

} //i就是當前記錄的個數

vectorrecordvec(i);

for (auto p : records)

recordvec[p.second.index] = p.second;

stable_sort(recordvec.begin(),recordvec.end(), compare);

i = i>8 ? 8 : i;

for (int j = 0; j

提示的錯誤用例在本地執行是正確的,懷疑是牛客網的鍋。不管了23333

華為 簡單錯誤記錄

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1.記錄最多8條錯誤記錄,對相同的錯誤記錄 即檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 檔案所在的目錄不同,檔名和行號相同也要合併 2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元 如果檔名不同,而只是檔名的後...

華為OJ(簡單錯誤記錄)

描述 開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1 記錄最多8條錯誤記錄,迴圈記錄,對相同的錯誤記錄 淨檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 2 超過16個字元的檔名稱,只記錄檔案的最後有效16個字元 3 輸入的檔案可能帶路徑,記錄檔名稱不能帶路徑。知識點字...

華為OJ 簡單錯誤記錄

簡單錯誤記錄 開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1 記錄最多 8條錯誤記錄,迴圈記錄,對相同的錯誤記錄 淨檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 2 超過 16個字元的檔名稱,只記錄檔案的最後有效 16個字元 3 輸入的檔案可能帶路徑,記錄檔名稱不能帶...