今年北郵機試不讓帶資料了,預計今後都不會再讓帶資料,影響還是蠻大的。
32位二進位制數x,輸出x+1和x+3之後的32位二進位制數
第一行輸入乙個整數t,代表測試資料組數。
接下來的t行,每行輸入乙個32位二進位制數
對每組測試資料,輸出兩行,第一行為x+1,第二行為x+3
200000000000000000000000000000000
00000000000000000000000000000001
00000000000000000000000000000001笨比做法,把32位二進位制數轉化為十進位制數再轉化為二進位制數,注意轉化成的十進位制數要用long long00000000000000000000000000000011
00000000000000000000000000000010
00000000000000000000000000000100
計算二叉樹兩個結點的最短距離。#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行,每行是兩個結點之間的最短距離
18 42 3
4 56 -1
-1 -1
-1 7
-1 -1
8 -1
-1 -1
1 64 6
4 58 1
242其實這道題應該找二叉樹的公共祖先。但是機試的時候,一方面是我之前沒有寫過二叉樹公共祖先,一方面是懶,直接把二叉樹轉化成了父節點和子節點距離為1的圖,然後dijkstra算了一下最短路徑4
計算從城市1到城市n的最短路徑長度。分為白天和黑夜,黑夜會關掉若干條線路,分別計算城市1到城市n的在白天和黑夜的最短路徑長度。保證每個城市與其他城市必有連線。兩個城市之間可能有多重邊#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;
}
第一行輸入t,測試用例組數
第二行輸入n,m,k. n是城市數,m是邊數,k是黑夜關閉的邊數(n<=50)
接下來m行,每行輸入三個數x,y,z,代表城市x和城市y之間的距離
最後一行k個數,代表晚上關閉的線路序號
每組資料輸出兩行,分別代表白天和黑夜,城市1到n的最短路徑長度
14 4 1
1 2 1
2 3 1
3 4 1
1 4 1
4
13
#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 ...