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 }