10420 List of Conquests
思路反思见注释。。。
//一开始写着写着思路就有些乱了,跑去看题解,也没看出什么,居然只因为自己还需多用一个变量记录country数而放弃
//后来老卡在county的比较上面了,弄了半天,才发现我用来控制循环的n,一直在减小,再增加一个变量解决
//又出现问题,我自以为名字有两个,果断fgets+sscanf
//惨烈的教训,使用fgets之前一定记得读入/n,否则每次都少数据。。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXN 75
typedef struct stat{
char cty[MAXN];
int tot;
}Stat;
int cmp(const void* a, const void* b)
{
return strcmp(((Stat*)a)->cty, ((Stat*)b)->cty);
}
int main()
{
#ifdef LOCAL
freopen("10420.txt", "r", stdin);
#endif
Stat love[2000];
int k, n, num = 0;
char name[MAXN], buf[1000];
scanf("%d", &n);
getchar();
k = n;
for(int i = 0; i < n; i++) { love[i].tot = 0; memset(love[i].cty, '\0', MAXN);}//初始化
while(k--)
{
memset(name, '\0', MAXN);
fgets(buf, 1000, stdin);
sscanf(buf, "%s", name);
int ok = 0;
for(int j = 0; j < n; j++)
if(strcmp(name, love[j].cty) == 0) { love[j].tot++; ok = 1; break; }
if(!ok) { strcpy(love[num].cty, name); love[num].tot++; num++; }
}
qsort(love, num, sizeof(Stat), cmp);
for(int i = 0; i < num; i++) printf("%s %d\n", love[i].cty, love[i].tot);
return 0;
}
浙公网安备 33010602011771号