#include<iostream> using namespace std; int main() { int a[10] = { 0 }, n, max,max_n;//max表示出现最多的次数,max_n表示对应的数组下标 for (int i = 0; i < 20; i++) { cin >> n; a[n]++;//n出现一次,则将a[n]自增1 } max = a[0]; max_n = 0; for (int i = 0; i < 10; i++) { if (a[i] > max)//寻找出现次数最多的 { max = a[i]; max_n = i; } } cout << max_n << endl; return 0; }
练习一下map
#include <iostream>
#include <map>
#include <cctype>
using namespace std;
int main()
{
int i,tmp;
map<int,int> mode;
for(i=0;i<20;i++)
{
cin >> tmp;
auto it=mode.find(tmp);
if(it==mode.end())
mode[tmp]=1;
else
mode[tmp]++;
}
auto it=mode.begin();
auto ans=it;
for(it++;it!=mode.end();it++)
if(it->second>ans->second)
ans=it;
cout << ans->first << endl;
return 0;
}
#include<stdio.h> int main (){//the shorter,the better. int i,t; for(;~scanf("%d",&t);){ int h[11]={0}; for (++h[t],i = 0; i < 19&&~scanf("%d",&t);++h[t],i++); for (t=i=1; i<11||(printf("%d\n",t),0);t=h[t]>=h[i]?t:i,i++); } }
#include<stdio.h> int main() { int i,j,a[20],b[10]={1,2,3,4,5,6,7,8,9,10},num[10]={0}; for(i=0;i<20;i++) { scanf("%d",&a[i]);//输入 for(j=0;j<10;j++)//判断是哪个数 { if(a[i]==b[j]) num[j]++;//个数累加 } } int max=num[0],maxindex=0;//找最多值 for(i=0;i<10;i++) if(num[i]>max) { max=num[i];maxindex=i; } printf("%d\n",maxindex+1);//加一是因为下标从0开始,也可以直接输出b[maxindex] }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] record= new int[11]; while (scanner.hasNext()) record[scanner.nextInt()]++; int max = 0; int index =0; for (int i = 1; i <=10 ; i++) { if (record[i]>max){ index=i; max=record[i]; } } System.out.println(index); } }
//注意记得sum的初始化,另外bits/stdc++.h真的好神奇一个头文件 #include<bits/stdc++.h> using namespace std; int main() { int a[20]; while (cin >> a[0]) { int sum[10] = { 0 }; sum[a[0]]++; for (int i = 1; i<20; i++) { cin >> a[i]; sum[a[i]]++; } int max = 0, pos = 0; for (int i = 0; i<10; i++) if (sum[i]>max) max = sum[i], pos = i; cout << pos << endl; } }
#include <bits/stdc++.h> using namespace std; int main() { int ans = 0; //记录众数 int hash[11]; //记录每个数出现的次数 memset(hash,0,sizeof(hash)); //全部初始化为0 for(int i = 0; i < 20; i++) { int temp; cin >> temp; hash[temp]++; ans = max(ans,hash[temp]); } for(int i = 1; i <= 10; i++) { if(hash[i] == ans) { cout << i << endl; break; } } return 0; }
import java.util.Scanner; public class Main { public static void main(String[] args) { int [] arr=new int[11]; int max; Scanner in=new Scanner(System.in); while (in.hasNext()) { for(int i=0;i<=10;i++) arr[i]=0; max=arr[0]; for(int i=0;i<20;i++) arr[in.nextInt()]++; for(int i=1;i<=10;i++) { if(arr[i]>max) max=i; } System.out.println(max); } } }
/** * 众数处理函数 * @param arrayList 多重集S */ public static void showFun(ArrayList arrayList) { Collections.sort(arrayList); //数组排序 int max = 1;//最大次数 Map map = new HashMap(); //存放:当有多个数出现次数相等时的数 for ( int i = 0; i < arrayList.size()-1; i++ ) { int count = 1; for ( int j = i + 1; j < arrayList.size() && arrayList.get(i) == arrayList.get(j); j++ ) { //如果当前数等于上一个数 count++; } if ( count > max ) { //当前次数为最大时,更新最大次数 并保存值 max = count; map.put(arrayList.get(i), count); } if ( count == max ) { //当前次数==之前的次数时,保存值 map.put(arrayList.get(i), count); } } ArrayList arr=new ArrayList(); //存放最大值相同是的key值,也就是数 for ( Object key : map.keySet() ) { //获得key if ( max == (int) map.get(key) ) { //获得value 如果value==最大次数 则输出 arr.add(key) ; } } Collections.sort(arr);//排序 如果存在一样多次数的众数,则输出权值最小的那一个 System.out.println((int)arr.get(0)); }
import java.util.Map; import java.util.Scanner; import java.util.TreeMap; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { Map<Integer , Integer> myMap = new TreeMap<Integer, Integer>(); for(int i = 0;i < 20;i++) { int n = scanner.nextInt(); if (myMap.containsKey(n)) { myMap.put(n, myMap.get(n) + 1); }else { myMap.put(n, 1); } } int max = Integer.MIN_VALUE; for(Map.Entry<Integer , Integer> entry : myMap.entrySet()) { max = Math.max(max, entry.getValue()); } for(Map.Entry<Integer, Integer> entry : myMap.entrySet()) { if (entry.getValue() == max) { System.out.println(entry.getKey()); break; } } } } }
#include <iostream> #include <vector> using namespace std; int main() { vector<int>count(11); //统计1——10每个数出现次数 for (int i = 0; i < 20; i++) { int num; cin >> num; count[num]++; } int max_count = 0, //count最大值 mode; //众数 for (int i = 1; i <= 10; i++) { if (max_count < count[i]) { max_count = count[i]; mode = i; } } cout << mode << endl; return 0; }
#include <cstdio> #include <map> using namespace std; int main(){ int arr[21]; while(scanf("%d",&arr[1]) != EOF){ for(int i = 2; i <= 20; ++i){ scanf("%d",&arr[i]); } map<int,int> mymap; for(int i = 1; i <= 20; ++i){ mymap[arr[i]]++; //核心 } int max_first = 0, max_second = 0; map<int,int>::iterator it; for(it=mymap.begin();it!=mymap.end();++it){ // printf("%d %d\n",it->first,it->second); if(it->second > max_second){ max_first = it->first; max_second = it->second; } } printf("%d\n",max_first); } return 0; }
#include <iostream> #include <cstring> using namespace std; int main() { int a[12],temp; while(cin>>temp){//输入一个数 memset(a,0,sizeof(a));//初始化 a[temp]++; for(int i=0;i<19;i++){//输入之后19个数 cin>>temp; a[temp]++; } int max=1;//max用于保存众数的位置 for(int i=1;i<=10;i++){ if(a[i]>a[max]){ max=i; } } cout<<max<<endl; } }
import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Map<Integer, Integer> digitMap = new HashMap<Integer, Integer>(); List<Integer> digitList = new ArrayList<Integer>(); for (int i = 0; i < 20; i++) { int digit = scanner.nextInt(); if (digitMap.get(digit) == null) { digitMap.put(digit, 1); } else { digitMap.put(digit, digitMap.get(digit) + 1); } } // 排序 for (Integer key : digitMap.keySet()) { if (!digitList.contains(digitMap.get(key))) { digitList.add(digitMap.get(key)); } } Object[] digitArray = digitList.toArray(); Arrays.sort(digitArray); int max = (int)digitArray[digitList.size() - 1]; for (Integer key : digitMap.keySet()) { if (digitMap.get(key) == max) { System.out.println(key); break; } } } }
#include <iostream> #include <vector> using namespace std; int main() { int n; while (cin >> n){ vector<int> nums(11); ++nums[n]; for (int i = 0; i < 19; ++i){ cin >> n; ++nums[n]; } n = 1; for (int i = 1; i <= 10; ++i) if (nums[i] > nums[n]) n = i; cout << n << endl; } }
#include <stdio.h> int main() { int num; int mark = 1; int i; int arr[11] = {0}; while (scanf("%d", &num) != EOF) { arr[num]++; } for (i = 1; i <= 10; i++) { //printf("%-4d ", arr[i]); if(arr[i]>arr[mark]){ mark = i; } } printf("%d",mark); return 0; }
#include <stdio.h> int main() { int a[11] = {0}, x, k; for (int i = 0; i < 20; i ++) { scanf("%d", &x); a[x]++; } k = 10; for (int i = 9; i >= 1; i --) { if (a[i]>=a[k]) { k = i; } } printf("%d", k); return 0; }