17HNUCM計科練習4題解 二分,歸併排序

2021-09-19 06:13:00 字數 3325 閱讀 9873

目錄

問題 a: 習題5-9 完數

問題 b:  求多次落地彈球高度

問題 c: 二分搜尋(遞迴)

問題 d: 二分搜尋(非遞迴)

問題 e: 陣列合併

問題 f: 歸併排序

問題 g: 線性搜尋 

題目描述

乙個數如果恰好等於它的因子和,這個數就稱為「完數」。例如,6的因子為1,2,3,而6=1+2+3,所以6是「完數」。

程式設計輸出1000以內的所有完數,每個完數輸出一行,並按下面的格式輸出其因子:

6 its factors are 1,2,3輸入無

輸出每個完數輸出一行,並按下面的格式輸出其因子:

? its factors are ?,?,?

樣例輸入 copy

樣例輸出 copy

6 its factors are 1,2,3

28 its factors are 1,2,4,7,14

496 its factors are 1,2,4,8,16,31,62,124,248

提示

因子包含1但不包含其本身。

#includeusing namespace std;

int main()

printf("length=%.4f\nhigh=%.4f\n",b,n);

}

題目描述

使用遞迴演算法,實現二分搜尋。

輸入多組資料輸入,每組第乙個數字為陣列的長度n,然後輸入n個整數,最後輸入待查詢的值。

輸出輸出待查詢值所在的位置,如果沒有找到,則返回-1。

樣例輸入 copy

3 1 2 3 2

4 0 1 3 4 2

樣例輸出 copy

2

-1

#includeusing namespace std;

int aa(int a,int left,int right,int b)

else

return -1;

}int main()

cin>>b;

sort(a,a+n);

int s=aa(a,0,n,b);

if(s>=0)

cout《題目描述

使用非遞迴演算法,實現二分搜尋。

輸入多組資料輸入,每組第乙個數字為陣列的長度n,然後輸入n個整數,最後輸入待查詢的值。

輸出輸出待查詢值所在的位置,如果沒有找到,則返回-1。

樣例輸入 copy

3 1 2 3 2

4 0 1 3 4 2

樣例輸出 copy

2

-1

#includeusing namespace std;

int aa(int a,int left,int right,int b)

return -1;

}int main()

cin>>b;

sort(a,a+n);

int s=aa(a,0,n,b);

if(s>=0)

cout《題目描述

編寫乙個程式,將兩個有序陣列合併成乙個更大的有序陣列,要求時間複雜度為o(n)。

輸入多組資料輸入,每組輸入包括兩行,每行第乙個數字為陣列長度n,然後輸入n個有序整數。

輸出輸出合併後的陣列(公升序),每組輸出用乙個空行隔開。

樣例輸入 copy

3 1 3 5

3 2 4 6

2 1 2

4 3 4 5 6

樣例輸出 copy

1 2 3 4 5 6

1 2 3 4 5 6

#includeusing namespace std;

void aa(int a,int n,int b,int m,int c)

cin>>m;

int b[m];

for(int i=0;i>b[i];

}int s=n+m;

int c[s];

aa(a,n,b,m,c);

for(int i=0;i題目描述

編寫乙個程式,使用分治策略實現二路歸併排序(公升序)。

輸入多組輸入,每組第乙個數字為陣列長度,然後輸入乙個一維整型陣列。

輸出輸出排序之後(公升序)的一維整型陣列,每組輸出佔一行。

樣例輸入 copy

6 1 8 6 5 3 4

5 12 42 2 5 8

樣例輸出 copy

1 3 4 5 6 8

2 5 8 12 42

#includeusing namespace std;

void merge(int c,int d,int l,int m,int r)

else

for(int q=i;q<=m;q++)

}void mergepass(int x,int y,int lx,int ly,int s)

if(i+s>n)

mergesort(a,n);

for(int i=0;i題目描述

請編寫乙個程式,輸入包含n(n<=10000)個整數的數列s以及包含q個(q<=500)不重複整數的數列t,輸出既包含於t也包含於s的整數的個數c。s、t中的元素均大於0且小於109,t的元素不重複。

輸入第一行輸入n,第二行輸入代表s的n個整數,第三行輸入q,第四行輸入代表t的q個整數。

輸出用1行輸出c。

樣例輸入 copy

51 2 3 4 5

33 4 1

樣例輸出 copy

3
#include#include using namespace std;

int aa(int a,int left,int right,int b)

return -1;

}int main()

sort(a,a+n);

cin>>m;

int b[m];

for(int i=0;i>b[i];

}int s=0;

for(int i=0;i}

cout<}

return 0;

}

2019 SCU 計科筆試

輸入乙個4位數,求4位數組成的新的最大的4位數和最小的4位數的差。unsigned differfrommaxmin unsigned num 思路 很簡單,將各位分開 排序,逆序最大 順序最小 code 19 輸入乙個4位數,求4位數組成的新的最大的4位數和最小的4位數的差。unsigned di...

計科院20201011藍橋訓練題解

題目均 於dotcpp bin巨出的題就是難啊啊啊 小明發現49很有趣,首先,它是個平方數。它可以拆分為4和9,拆分出來的部分也是平方數。169也有這個性質,我們權且稱它們為 拼接平方數。100可拆分1 00,這有點勉強,我們規定,0 00 000 等都不算平方數。小明想 還有哪些數字是這樣的呢?你...

計網 17差錯檢測和糾正技術

檢錯重發 detect and retransmission 檢測到傳送方報文受損,則通知傳送方重傳副本 差錯率低效果好 適用場合 檢錯重發適合鏈路差錯率很低的場合,如有線通訊前向糾錯 forward error correction,fec 糾錯通過額外資訊 預先 進行 時效性好 適用場合 前向糾...