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 }