杭電計算機2023年碩士研究生複試詳解

2021-08-17 01:36:43 字數 2214 閱讀 2686

簡要描述:輸入乙個數,代表要檢測的例子的個數,每個例子中:

輸入兩個時間(格式hh:mm:ss),前面時間減去後面時間,輸出在時鐘上顯示的時間,格式一樣,如果是以為數字的前面補零。

思路:這道題有個知識盲區,在輸出格式上進行控制,如果不滿足兩位就補0。我們可以用printf函式來實現該功能。

1、用h1,m1,s1…等來儲存這兩個時間。

2、s1-s2的時候,如果夠減,就用s3儲存結果,如果不夠減,就s3=s1+60-s2,秒針就向分針借走一位。然後分針m1–;

3、m1-m2的時候同第二步。

4、h1-h2的時候,如果夠減就將結果儲存到h3中,不夠減就優先+24然後再減。

#include

#include

#include

#include

using

namespace

std;

int main()

if(mdiff<0)

if(hdiff<0)

hdiff+=24;

printf("%02d:%02d:%02d",hdiff,mdiff,sdiff);//%02d用來控制輸出格式。

}return

0;}

簡要描述:乙個活動有n個人參加,乙個主持人和n-1個普通參加者,其中所有的人都認識主持人,主持人也認識所有的人,主持人要求n-1個參加者說出他們在參加者中所認識的人數,如果a認識b,則b認識a,所以最少是會認識乙個人,就是主持人,他們說出了自己所認識的人數後,需要判斷他們中有沒有人說謊。

輸入:

第一行是n,n=0表示結束

第二行是n-1個數字

輸出:

lie absolutely 或者 maybe truth

7 1 2 4 5 5 3

9 3 7 7 7 7 5 6 6

兩個測試例子中第乙個是lie absolutely,第二個是maybe truth

思路:根據題意,我們把這個想成一幅圖,每個人都是乙個點,最開始每個點都和中心點(主持人有連線),接下來,每個人都開始說,自己有幾根連線(也就是自己認識多少人),我們把所有人(除主持人)的連線都切除,那麼如果沒有人撒謊的話,最後應該每個人都只有一條連線主持人的線。同時,我們並不知道誰連著誰,所以我們在切線的時候,優先斬斷線多的點。

1、sort排序,將認識人的多少對其進行排序

2、遍歷陣列(陣列中儲存的有除了主持人以外,其他的所有人說的話)

3、每經過乙個人,這個人如果認識n個人,那麼就把他後面的n-1個人的資料都-1,然後把該人的資料置為1,這樣就能夠做到切斷所有除主持人以外的線。

4、全部切完之後,如果除了主持人以外所有的人都只有一條線,那麼就說明有可能沒人說謊,如果存在有人和誰都沒有連線線,說明這些人當中有人說謊。

舉例分析一下:

輸入n個數,再輸入n-1個數

9 3 7 7 7 7 5 6 6

先把這n-1個數字按從大到小排序

7 7 7 7 6 6 5 3

第乙個人認識了7個人,除了主持人還剩6個,就當是認識最靠近他後面的6個。

這樣,除去第乙個人,後面認識的人就都減少了乙個,變成了:

7 6 6 6 5 5 4 3

再次排序

從第二個人,除了主持人和第乙個,應該認識5個人,就當是認識最靠近他後面的5個

這樣,除去這個人,後面認識的人就都減少了乙個,變成了

7 6 5 5 4 4 3 3

排序,相減,重複下去

如果最後出現了0,就說明有人說謊

如果排序後,當前認識的人和其後面的人數都是1了,那乙個人都是主持人,也是maybe truth

#include

#include

#include

#include

using

namespace

std;

bool cmp(int a,int b)

int main()

else

if(a[i]==1)

for(int j=1;j//如果判斷不出來,就開始斬斷聯絡。

a[i+j]--;//後面的點斬斷一條線。

a[i]=1;//將當前節點斬斷聯絡,只留一條到主持人的路線。 }}

return

0;}

杭電計算機2023年碩士研究生複試第二題

乙個活動有n個人參加,乙個主持人和n 1個普通參加者,其中所有的人都認識主持人,主持人也認識所有的人,主持人要求n 1個參加者說出他們在參加者中所認識的人數,如果a認識b,則b認識a,所以最少是會認識乙個人,就是主持人,他們說出了自己所認識的人數後,需要判斷他們中有沒有人說謊。輸入 第一行是n,n ...

2016河南大學計算機碩士研究生複試上機考試第2題

題目要求讀入兩個列表,我是寫著玩,所以執行程式後需要自己輸入兩個字串序列,輸入方法為 輸入乙個字串序列,回車,輸入下乙個序列,回車 題目 若兩個鍊錶包含相同的項,項的順序可不同,則它們被稱為對方的排列 若乙個列表中某一項有k個,則另乙個列表中也應有k個 如,列表 7e7q 和互為排列,而 31425...

杭電計算機研究生複試2023年第二題

給乙個數字矩陣,如果上下左右中數值相同,則表示乙個連通區域,求矩陣中聯通區域的數量 輸入 行列數,矩陣 輸出 連通域的數量 思路 用bfs遍歷 include includeusing namespace std const int maxn 100 int n,m int matrix maxn ...