2019北郵計算機機試回憶和前三道題題解

2021-09-14 06:31:01 字數 3524 閱讀 3099

今年北郵機試不讓帶資料了,預計今後都不會再讓帶資料,影響還是蠻大的。

32位二進位制數x,輸出x+1和x+3之後的32位二進位制數

第一行輸入乙個整數t,代表測試資料組數。

接下來的t行,每行輸入乙個32位二進位制數

對每組測試資料,輸出兩行,第一行為x+1,第二行為x+3

2

00000000000000000000000000000000

00000000000000000000000000000001

00000000000000000000000000000001

00000000000000000000000000000011

00000000000000000000000000000010

00000000000000000000000000000100

笨比做法,把32位二進位制數轉化為十進位制數再轉化為二進位制數,注意轉化成的十進位制數要用long long

#include.h>

using namespace std;

int main()

long long num1=num+1;

int ans1[32]

; int size1=0;

while

(num1>0)

for(int i=

31;i>=size1;i--

)printf

("0");

for(int i=size1-

1;i>=

0;i--

)printf

("%d"

,ans1[i]);

printf

("\n");

long long num2=num+3;

int ans2[32]

; int size2=0;

while

(num2>0)

for(int i=

31;i>=size2;i--

)printf

("0");

for(int i=size2-

1;i>=

0;i--

)printf

("%d"

,ans2[i]);

printf

("\n");

}return0;

}

計算二叉樹兩個結點的最短距離。

第一行輸入測試資料組數t

第二行輸入n,m 。n代表結點的個數,m代表要查詢的資料組數

接下來n行,每行輸入兩個數,代表1~n結點的孩子結點,如果沒有孩子結點則輸入-1.根節點為1.

接下來m行,每行輸入兩個數,代表要查詢的兩個結點

每組測試資料輸出m行,每行是兩個結點之間的最短距離

1

8 42 3

4 56 -1

-1 -1

-1 7

-1 -1

8 -1

-1 -1

1 64 6

4 58 1

242

4

其實這道題應該找二叉樹的公共祖先。但是機試的時候,一方面是我之前沒有寫過二叉樹公共祖先,一方面是懶,直接把二叉樹轉化成了父節點和子節點距離為1的圖,然後dijkstra算了一下最短路徑

#include.h>

using namespace std;

const int n

=100

;const int inf=

1e10+10

;vectoredge[n]

,cost[n]

;struct node

node

(int v,int w):v

(v),

w(w)

bool operator <

(const node &a)

const};

int dist[n]

;bool vis[n]

;void

dijkstra

(int start)}}

}int main()

if(v!=-1

)}for(int i=

1;i<=m;i++)}

}return0;

}

計算從城市1到城市n的最短路徑長度。分為白天和黑夜,黑夜會關掉若干條線路,分別計算城市1到城市n的在白天和黑夜的最短路徑長度。保證每個城市與其他城市必有連線。兩個城市之間可能有多重邊

第一行輸入t,測試用例組數

第二行輸入n,m,k. n是城市數,m是邊數,k是黑夜關閉的邊數(n<=50)

接下來m行,每行輸入三個數x,y,z,代表城市x和城市y之間的距離

最後一行k個數,代表晚上關閉的線路序號

每組資料輸出兩行,分別代表白天和黑夜,城市1到n的最短路徑長度

1

4 4 1

1 2 1

2 3 1

3 4 1

1 4 1

4

1

3

#include.h>

using namespace std;

const int n

=100

;const int inf=

1e10+10

;vectoredge[n]

,cost[n]

;struct node

node

(int v,int w):v

(v),

w(w)

bool operator <

(const node &a)

const};

struct road

;int dist[n]

;bool vis[n]

;void

dijkstra

(int start)}}

}int main()

dijkstra(1

);printf

("%d\n"

,dist[n]);

for(int i=

1;i<=n;i++

) edge[i]

.clear()

,cost[i]

.clear()

; int clo[

101]

;for

(int i=

1;i<=k;i++

)scanf

("%d"

,&clo[i]);

for(int i=

1;i<=m;i++)}

if(flag==

false)}

dijkstra(1

);printf

("%d\n"

,dist[n]);

}return0;

}

2023年北郵計算機機試題回憶

首先對於機試,2019年一共四道題 a 對於任何乙個數x,0b 關於二叉樹問題。給定t t 1 組測試用例,每組測試用例第一行是n和m,n代表該棵二叉樹節點1 n,m代表查詢次數,接下來有n行輸入,每k 1 k n 行有兩個數字代表節點i和j,i表示節點k的左子節點,j表示節點k的右子節點 緊接著是...

19北郵計算機院機試

32位二進位制數 x 對其進行x 1,x 3操作,並輸出。注意不能忽略前導0。輸入 第一行,乙個整數 t 代表測試資料組數。接著 t 行,輸入32為二進位制數輸出對每組測試資料。輸出兩行,第一行為x 1,第二行為x 3.測試樣例輸入2 00000000000000000000000000000000...

2023年北郵計算機專業課機試

2012年計算機學院機試 a 二叉排序樹 2018 3 3 by ben yafang done include includeusing namespace std struct node root void insert node root,int x else int main return ...