【CCF】出現回数が最も多い数
試験問題番号:
201312-1
試験問題名:
出現回数が最も多い数
時間制限:
1.0s
メモリの制限:
256.0MB
問題の説明:
問題は、与えられたn個の正の整数を記述し、それらの中で最も多く出現した数を探し出す.このような数が複数ある場合は、その中の最小の1つを出力します.入力フォーマット入力の最初の行には正の整数n(1≦n≦1000)が1つしかなく、数字の個数を表す.入力された2行目はn個の整数s 1,s 2,...,sn(1≦si≦10000,1≦i≦n)である.隣接する数はスペースで区切られています.出力フォーマットは、このn回のうち最も出現回数の多い数を出力する.このような数が複数ある場合は、その中の最小の1つを出力します.サンプル入力6 10 1 10 20 30サンプル出力10
問題解決の考え方:
この問題は直接mapで操作され、mapのkeyは正の整数であり、valueは配列に現れる回数である.ansは出現回数が最も多い正の整数を格納し、maxは出現回数が最も多い回数を記録するために使用され、for-eachはmapをループし、ある数の出現回数がmaxより大きい場合、出現回数が最も多いmaxと出現回数が最も多い正の整数ansを更新する.最後にansを出力すればいいです.
100点コード:
——————————————2019.09.07更新——————————————————
201312-1
試験問題名:
出現回数が最も多い数
時間制限:
1.0s
メモリの制限:
256.0MB
問題の説明:
問題は、与えられたn個の正の整数を記述し、それらの中で最も多く出現した数を探し出す.このような数が複数ある場合は、その中の最小の1つを出力します.入力フォーマット入力の最初の行には正の整数n(1≦n≦1000)が1つしかなく、数字の個数を表す.入力された2行目はn個の整数s 1,s 2,...,sn(1≦si≦10000,1≦i≦n)である.隣接する数はスペースで区切られています.出力フォーマットは、このn回のうち最も出現回数の多い数を出力する.このような数が複数ある場合は、その中の最小の1つを出力します.サンプル入力6 10 1 10 20 30サンプル出力10
問題解決の考え方:
この問題は直接mapで操作され、mapのkeyは正の整数であり、valueは配列に現れる回数である.ansは出現回数が最も多い正の整数を格納し、maxは出現回数が最も多い回数を記録するために使用され、for-eachはmapをループし、ある数の出現回数がmaxより大きい場合、出現回数が最も多いmaxと出現回数が最も多い正の整数ansを更新する.最後にansを出力すればいいです.
100点コード:
#include
using namespace std;
int main()
{
map m; //map key ,value
int n;
cin >> n; //n
for (int i = 0; i < n; i++) //
{
int temp;
cin >> temp;
m[temp]++;
}
int ans,max=0; //ans ,max
for(auto it:m) //for-each map
{
if(it.second > max) // max
{
max = it.second; // max
ans = it.first; //
}
}
cout << ans << endl;
return 0;
}
——————————————2019.09.07更新——————————————————
#include
using namespace std;
#define Up(i,a,b) for(int i = a; i <= b;i++)
int main()
{
int n;
cin >> n;
map m;
int ans,cnt = 0;
Up(i,1,n)
{
int _;
cin >> _;
m[_]++;
if(m[_] > cnt)
{
cnt = m[_];
ans = _;
}
else if(m[_] == cnt)
{
ans = min(ans,_);
}
}
cout << ans << endl;
return 0;
}