题目大意:统计国家名字出现的次数,按照字母顺序输出
解题过程:一次AC
正确代码:
# include <cstdio>
# include <cstdlib>
# include <cstring>
# include <ctype.h>
# include <string>
//# define LOCAL
using namespace std;
struct country{
char name[75];
// char qname[75];
int num;
country(){
strcpy(name,"");
// strcpy(qname,"");
num=0;
}
void update(char* s){
strcpy(name,s);
// for(int i=0;i<strlen(s);i++){
// qname[i]=tolower(s[i]);
// }
// qname[strlen(s)]='\0';
num++;
}
};
int cmpchar(const void*a,const void*b){
return strcmp(*(char(*)[75])a,*(char(*)[75])b);
}
int cmpcountry(const void*a,const void*b){
return strcmp((*(country*)a).name,(*(country*)b).name);
}
int main(){
# ifdef LOCAL
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int n;
scanf("%d\n",&n);
char(*name)[75]=new char[n][75];
for(int i=0;i<n;i++){
scanf("%s%*[^\n]%*c",name[i]);
}
qsort(name,n,sizeof(name[0]),cmpchar);
int numofcount=0;
country* count=new country[n];
count[numofcount++].update(name[0]);
for(int i=1;i<n;i++){
// printf("%s %s\n",name[i-1],name[i]);
if(strcmp(name[i-1],name[i])!=0){
count[numofcount++].update(name[i]);
}
else{
count[numofcount-1].num++;
}
}
for(int i=0;i<numofcount;i++){
printf("%s %d\n",count[i].name,count[i].num);
}
return 0;
}