1012: 数字(2015年中南大学研究生复试机试题 )

1012: 数字

时间限制: 1 Sec  内存限制: 128 MB
提交: 166  解决: 95
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

PIPI在做一个调查,0到9的10个数字中大家最喜欢哪一个?他询问了N个人,用这些人的方法告诉他的数字组成了一个N位的整数。然后PIPI就去给女朋友打电话了,他叫你帮忙统计一下,这个整数中哪一个数字出现最多。

输入

输入数据有多组,每组占一行,由一个N为的整数构成(PIPI急着打电话,没有告诉你N是多少,只告诉这个数字小于10的1000次方)。

输出

对于每组输入数据,输出一行,对应一个要求的答案(答案为0~9之间的一个数字,如果有多个数字出现次数一样多的情况,输出最小的数字)

样例输入

1234567891
11122333
1235564

样例输出

1
1
5


 1 #include<iostream>
 2 #include<string>
 3 #include<string.h>
 4 using namespace std; 
 5 int time22[10];//time数组记录每个数字出现的次数的 
 6 int sort[10]; //用来存各个数字,在排序的时候用 
 7 
 8 int main(){
 9     string numstr;
10     while(cin>>numstr){
11         int len=numstr.length();
12         for(int i=0;i<10;i++){//初始化数组 
13             sort[i]=i;
14             time22[i]=0;
15         }
16         for(int i=0;i<len;i++){
17             int temp=(int)numstr[i];//将字符串里的每个字符转换成对应的整数,再对对应的整数增加计数 
18             temp=temp-48;
19             time22[temp]++;
20         }
21         int max=1;
22         for(int i=0;i<10;i++){
23             bool flag=true;
24             for(int j=0;j<9-i;j++){
25                 if(time22[j]<time22[j+1]){
26                     int t=time22[j];
27                     time22[j]=time22[j+1];
28                     time22[j+1]=t;
29                     t=sort[j];
30                     sort[j]=sort[j+1];
31                     sort[j+1]=t;
32                     flag=false;
33                 }
34             }
35             if(flag)break;
36         }
37         for(int i=0;i<9;i++){
38             if(time22[i]==time22[i+1]){
39                 max++;
40             }
41             else{
42                 break;
43             }
44         }
45         int min=0;
46         for(int i=1;i<max;i++){
47             if(sort[i]<sort[min]){
48                 min=i;
49             }
50         }
51         cout<<sort[min]<<endl;
52     }
53     return 0;
54 } 

 

posted @ 2019-03-17 17:06  我是happy唐啊  阅读(284)  评论(0编辑  收藏  举报