北大考研複試上機 日誌排序

2021-08-14 17:46:01 字數 2443 閱讀 3217

有乙個網路日誌,記錄了網路中計算任務的執**況,每個計算任務對應一條如下形式的日誌記錄: 「hs_10000_p」是計算任務的名稱,「2007-01-17 19:22:53,315」是計算任務開始執行的時間「年-月-日 時:分:秒,毫秒」,「253.035(s)」是計算任務消耗的時間(以秒計) hs_10000_p 2007-01-17 19:22:53,315253.035(s) 請你寫乙個程式,對日誌中記錄計算任務進行排序。 時間消耗少的計算任務排在前面,時間消耗多的計算任務排在後面。 如果兩個計算任務消耗的時間相同,則將開始執行時間早的計算任務排在前面。

日誌中每個記錄是乙個字串,每個字串佔一行。最後一行為空行,表示日誌結束。日誌中最多可能有10000條記錄。

計算任務名稱的長度不超過10,開始執行時間的格式是yyyy-mm-dd hh:mm:ss,mmm,消耗時間小數點後有三位數字。

計算任務名稱與任務開始時間、消耗時間之間以乙個或多個空格隔開,行首和行尾可能有多餘的空格。

排序好的日誌記錄。每個記錄的字串各佔一行。

輸入的格式與輸入保持一致,輸入包括幾個空格,你的輸出中也應該包含同樣多的空格。

示例1

hs_10000_p   2007-01-17 19:22:53,315     253.035(s)

hs_10001_p 2007-01-17 19:22:53,315 253.846(s)

hs_10002_m 2007-01-17 19:22:53,315 129.574(s)

hs_10002_p 2007-01-17 19:22:53,315 262.531(s)

hs_10003_m 2007-01-17 19:22:53,318 126.622(s)

hs_10003_p 2007-01-17 19:22:53,318 136.962(s)

hs_10005_m 2007-01-17 19:22:53,318 130.487(s)

hs_10005_p 2007-01-17 19:22:53,318 253.035(s)

hs_10006_m 2007-01-17 19:22:53,318 248.548(s)

hs_10006_p 2007-01-17 19:25:23,367 3146.827(s)

hs_10003_m   2007-01-17 19:22:53,318     126.622(s)

hs_10002_m 2007-01-17 19:22:53,315 129.574(s)

hs_10005_m 2007-01-17 19:22:53,318 130.487(s)

hs_10003_p 2007-01-17 19:22:53,318 136.962(s)

hs_10006_m 2007-01-17 19:22:53,318 248.548(s)

hs_10000_p 2007-01-17 19:22:53,315 253.035(s)

hs_10005_p 2007-01-17 19:22:53,318 253.035(s)

hs_10001_p 2007-01-17 19:22:53,315 253.846(s)

hs_10002_p 2007-01-17 19:22:53,315 262.531(s)

hs_10006_p 2007-01-17 19:25:23,367 3146.827(s)

思路:非常坑的一道題,起先我沒有注意到「輸入包括幾個空格,你的輸出中也應該包含同樣多的空格」這句話,以為是考格式化輸入輸出字串,結果輸出結果格式不對。然後直接輸出這個記錄的原始文字,成功ac。

不得不說c語言的scanf和printf等格式化輸入輸出系列函式真是神器,足以應對一切牛鬼蛇神,可惜c++的string型別沒有內建這麼好的函式。在這裡記錄一下,printf中"%02d"意為輸出乙個int整數,如果這個數不足兩位就在前面補0;"%10.3f"意為輸出乙個浮點數(double和float都可以),向右對齊10位,保留3位小數。

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

typedef struct

record;

record record[10000];

bool timecmp(record &a, record &b)

bool cmp(record &a, record &b)

void mysort(int counter)

}}int main()

mysort(counter);

for(int i=0; i < counter; i++)

}

北大考研複試上機 放蘋果

把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。每行均包含二個整數m和n,以空格分開。1 m,n 10。對輸入的每組資料m和n,用一行輸出相應的k。示例1 7 3 8 思路 用動態規劃的方法,用dp i j 表示把i...

清華考研複試上機 進製轉換

將m進製的數x轉換為n進製的數輸出。輸入的第一行包括兩個整數 m和n 2 m,n 36 下面的一行輸入乙個數x,x是m進製的數,現在要求你將m進製的數x轉換成n進製的數輸出。輸出x的n進製表示的數。輸入時字母部分為大寫,輸出時為小寫,並且有大資料。示例1 16 10 f 15思路 這個題難就難在有 ...

2021考研複試C上機1

1.二進位制數轉十進位制數程式 include 二進位制轉十進位制c程式 intmain intbin to deci int a return sum 2.十進位制轉二進位制程式 include intmain intdeci to bin int a for j i 1 j 0 j return...