給定含有 n 個元素的多重集合 s,每個元素在 s **現的次數稱為該元素的重數。多重
集 s 中重數最大的元素稱為眾數。
例如,s=。
多重集 s 的眾數是 2,其重數為 3。
對於給定的由 n 個自然數組成的多重集 s,程式設計計算 s 的眾數及其重數。
輸入資料由檔名為 input.txt 的文字檔案提供。
檔案的第 1 行多重集 s 中元素個數 n;接下來的 n 行中,每行有乙個自然數。
程式執行結束時,將計算結果輸出到檔案 output.txt 中。輸出檔案有 2 行,第 1 行給
出眾數,第 2 行是重數。
612
2235
2
3
考慮了有多個眾數的情況,全部輸出
眾數問題(分治法解決)#include
using
namespace std;
struct stu stu[
100]
;int p=0;
/*一組資料中,眾數可以有乙個或多個,這個時候需要全部記錄下來
建立結構體陣列的目的就是為了記錄眾數
*/int
main()
; cout<<
"輸入全部數字:\n"
;for
(int i=
0; i)int max=0;
for(
int i=
0; ifor(
int i=
0; i) cout<.n<<
" : "
<.num
}
#include
using
namespace std;
int n;
int num=
0,v;
//全域性變數,表示眾數的個數和眾數
int a[
999]
;//儲存資料
void
fun(
int left,
int right)
// i-left+1 中位數左邊還有多少數字 如果大於num 則眾數可能位於左邊
if(i-left+
1>num)
fun(left,i)
;// right-j+1 中位數右邊還有多少數字 同上
if(right-j+
1>num)
fun(j,right);}
intmain()
sort
(a,a+n)
;//排序
fun(
0,n-1)
;//傳遞的引數是陣列下標
cout<" : "
}
分治演算法 眾數問題
problem description 給定含有n個元素的多重集合s,每個元素在s 現的次數稱為該元素的重數。多重集s中重數最大的元素稱為眾數。例如,s 多重集s的眾數是2,其重數為3。對於給定的由n 個自然數組成的多重集s,計算s的眾數及其重數。如果出現多個眾數,請輸出最小的那個。input 輸入...
眾數問題 分治演算法
給定含有n個元素的多重集合s,每個元素在s 現的次數稱為該元素的重數。多重集s中重數最大的元素稱為眾數。例如,s 多重集s的眾數是2,其重數為3。對於給定的由n 個自然數組成的多重集s,計算s的眾數及其重數。如果出現多個眾數,請輸出最小的那個。input 輸入資料的第1行是多重集s中元素個數n n ...
分治演算法解決眾數問題
題目 給定含有n個元素的多重集合s,每個元素在s 現的次數稱為該元素的重數。多重集s中重數最大的元素稱為眾數,如s 多重集s的眾數是2,其重數為3。分析 include using namespace std define m 100 int a m int num,val,n 重數,眾數,個數 v...