NYOJ 286 动物统计

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=286

简单的字符串统计,不多说,直接水过。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 char a[10010][11],b[10010];//数组a用以存贮字符串,数组b用以计次数
 5 int main()
 6 {
 7     int n,i,j;
 8     scanf("%d",&n);
 9     for(i=0;i<n;i++)
10     {
11         scanf("%s",&a[i]);
12         b[i]=1;//每个输入的 都先记为1
13     }
14     for(i=0;i<=n-1;i++)
15       for(j=i+1;j<=n-1;j++)
16       {
17         if(strcmp(a[i],a[j])==0)
18         b[i]++;
19       }
20       int max,flag;
21       max=b[0];  flag=0;//max用来记录次数,flag用来记录字符串出现最多在字符数组中的位置 
22       for(i=0;i<=n-1;i++)
23       {
24         if(max<b[i])
25         {max=b[i]; flag=i;}
26       }
27       printf("%s %d\n",a[flag],max);
28       system("pause");
29       return 0;
30 } 
31         

法二:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 struct tj
 6 {
 7     char str[11];
 8     int count;
 9 }w[10001];
10 bool comp(tj x,tj y)
11 {
12     if(strcmp(x.str,y.str)<0)//**将字符串按字典序从小到大排序**//
13         return true;
14     return false;
15 }
16 int main()
17 {
18     int n,i,j,p,max;
19     memset(w,0,sizeof(w));
20     scanf("%d",&n);
21     for(i=0;i<n;i++)
22     {
23         scanf("%s",w[i].str);
24         w[i].count=1;
25     }
26     sort(w,w+n,comp);
27     p=0;max=0;//**用p代表指向最多数量的字符串**//
28     for(i=1;i<n;i++)
29     {
30         if(strcmp(w[i].str,w[i-1].str)==0)//**后一个与前一个相等**//
31         {
32             w[i].count=w[i-1].count+1;
33         }
34         if(w[i].count>max)
35         {
36             max=w[i].count;
37             p=i;
38         }
39     }
40     printf("%s %d",w[p].str,max);
41     printf("\n");
42     return 0;
43 }

 

 

 

posted on 2012-08-08 16:46  mycapple  阅读(199)  评论(0编辑  收藏  举报

导航