演算法訓練 出現次數最多的整數

2022-01-15 12:41:35 字數 1440 閱讀 5738

問題描述

編寫乙個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數n也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值列印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只列印比較小的那個值。

輸入格式:第一行是乙個整數n,n £ 20;接下來有n行,每一行表示乙個整數,並且按照從小到大的順序排列。

輸出格式:輸出只有一行,即出現次數最多的那個元素值。

輸入輸出樣例

樣例輸入

5100

150150

200250

樣例輸出

150思路:這是我自己的思路是先統計各個元素出現的次數,並且定義乙個tem陣列來記錄這些次數,然後最後比較次數的最大值,定義乙個sign來記錄tem陣列中最大元素的的下標值,而這個sign+tem[sign]-1就是原陣列出現次數最多的元素的最後乙個的下標。挺難解釋,結合例項,按照題給樣例得出tem陣列為[1,2,1,1],比較出最大值記錄用sign記錄下標則sign=1,sign+tem[sign]-1 = 2, num[2] = 150,即最多元素出現的最後座標。

1 #include2

3int main(void)4

;7int n,i,k = 0;8

9 scanf("

%d", &n);

10if (n == 0 || n == -1)11

14for (i = 0; i < n; i++)

1518

19 tem[k]++;

20for (i = 1; i < n; i++) //

各元素計數

2126

else

2730}31

32int sign = 0;33

int max = tem[0

];34

for (i = 1; i < k + 1; i++) //

找出最大值

3541}42

43 printf("

%d", num[sign+tem[sign]-1

]);44

return0;

45 }

另乙個更厲害的演算法,真心佩服,來自

1 #include2

3int a[100000];4

5int

main()622

int s=0;23

intg;

24for(i=0;i<100000;i++)

253132}

33 printf("%d"

,g);34}

35return0;

36 }

演算法訓練 出現次數最多的整數

問題描述 編寫乙個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數n也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值列印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只列印比較小的那個值。輸入格式 第一行是乙個整數 n,n ...

演算法訓練 出現次數最多的整數

演算法訓練 出現次數最多的整數 時間限制 1.0s 記憶體限制 512.0mb 問題描述 編寫乙個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數n也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值列印出來。如果有兩個元素值出現的次數...

演算法訓練 出現次數最多的整數

演算法訓練 出現次數最多的整數 時間限制 1.0s 記憶體限制 512.0mb 問題描述 編寫乙個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數n也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值列印出來。如果有兩個元素值出現的次數...