【演算法練習】(8)眾數
題目描述
輸入20個數,每個數都在1-10之間,求1-10中的眾數(眾數就是出現次數最多的數,如果存在一樣多次數的眾數,則輸出權值較小的那一個)。
輸入描述:
測試資料有多組,每組輸入20個1-10之間的數。
輸出描述:
對於每組輸入,請輸出1-10中的眾數。
示例1
輸入
5 1 5 10 3 5 3 4 8 6 8 3 6 5 10 7 10 2 6 2
輸出
5
程式碼實現:
#include<iostream>
using namespace std;
int main(){
int e,arr[20],count[20],record[20],i=0,j=0;
// 初始化 e為輸入元素,arr儲存20個輸入,count儲存每個元素的計數值,record儲存每個元素的值,i用於記錄當前輸入元素個數,20個後清零,j記錄元素種類的個數,與i同時清零
for(int k=0;k<20;k++){
arr[k]=0;
count[k]=0;
record[k]=0;
}// 初始化陣列
while(cin>>e){
if(e>=1 && e<=10){//當輸入元素滿足條件時,計入陣列
arr[i]=e;
if(j==0){//第一個計數元素,直接儲存
record[j]=e;
count[j]++;
j++;
}else{
int k=0,flag=false;;
for(;k<j;k++){//對比計數陣列中的元素,若有相同,則計數值+1;
if(record[k]==e){
count[k]+=1;
flag=true;
break;
}
}
if(!flag){//若計數陣列中未有該元素,則新增儲存
record[j]=e;
count[j]++;
j++;
}
}
i++;
}
if(i==20){
// 滿20個就輸出眾數
int max=count[0],num=record[0];// max為最多的次數,num儲存對應眾數
for(int k=0;k<j;k++){
// cout<<record[k]<<":"<<count[k]<<endl;
if(count[k]==max && record[k]<num)// 如果出現次數相同,則儲存權值小的
num=record[k];
else if(count[k]>max){//如果次數大於當前記錄,則更新
max=count[k];
num=record[k];
}
}
cout<<num;//輸出眾數
// clear
i=0;j=0;
for(int k=0;k<20;k++){
arr[k]=0;
count[k]=0;
record[k]=0;
}
}
}
return 0;
}
/*
解題思路:
每輸入一個數,就與統計陣列中的數字一一對比,如果陣列中沒有,就新增,如果有計數值就+1,最後對統計陣列進行排序
*/
相關文章
- 水題 求眾數 (hash的練習)
- 演算法練習演算法
- 演算法題:求眾數演算法
- 【演算法】已知必存在眾數,求該眾數 -- Boyer-Moore 投票演算法演算法
- 【演算法】求眾數-js解法演算法JS
- 分治演算法-眾數問題演算法
- 演算法:Majority Element(求眾數)演算法
- 演算法練習--LeetCode--129. Sum Root to Leaf Numbers; Runtime: 8 ms100%演算法LeetCode
- 優化的求眾數方法 - 摩爾投票演算法(演算法思想+求眾數的三種方法+摩爾投票演算法改進版求眾數 II)優化演算法
- 演算法練習記錄(24.10.5)演算法
- matlab練習程式(Sinkhorn演算法)Matlab演算法
- swift演算法練習筆記Swift演算法筆記
- week8 數學訓練一
- 方法引數_練習_ParamTest
- PHP演算法練習二:求n和指定數的絕對差PHP演算法
- 求取眾數及重數的演算法實現(Java)演算法Java
- ”回溯演算法“框架及練習題演算法框架
- 遞迴與分治演算法練習遞迴演算法
- 牛客練習賽129 A-數數
- 【演算法】GPLT - 基礎梯級練習題 - 個位數統計(15分)演算法
- 演算法面試題彙總_2求眾數演算法面試題
- 藍橋杯 (java)演算法訓練 數對Java演算法
- 演算法練習題1-括號序列演算法
- 演算法練習--LeetCode--54. Spiral Matrix 100%演算法LeetCode
- 演算法導論第二章練習演算法
- 【20190326】【每天一道演算法題】求眾數(分治演算法)演算法
- Python 語言及其應用 3.8 練習 (8) (9)Python
- markdown 使用練習練習
- 求眾數、排序演算法、二分法排序演算法
- 數字影像處理相關練習
- [藍橋杯][演算法訓練VIP]方格取數演算法
- 演算法練習--LeetCode--29. Divide Two Integers: 100%演算法LeetCodeIDE
- LeetCode演算法練習——深度優先搜尋 DFSLeetCode演算法
- 演算法導論第三章練習演算法
- 求眾數
- 習題8-3 陣列迴圈右移 及 練習7-8 方陣迴圈右移陣列
- 基礎練習——python特殊的數字——2020.11.17Python
- 新手練習:Python練習題目Python