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 }

 

 

 

你可能感兴趣的:(统计)