問題描述
編寫乙個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數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 #include23int 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 #include23int 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。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值列印出來。如果有兩個元素值出現的次數...