题目很好理解,就是统计单词出现的次数;这个题如果直接用俩循环搜索,必Tle; 贡献了几次TLE 之后, 想到可以先用sort 排序 ,在用O(n)的循环计算ans;
代码如下:
#include <stdio.h>
#include <string>
#include <algorithm>
using namespace std;
char s[20005][30];
int ans[20005];
int main()
{
int n,m;
string str[20002];
while(scanf("%d%d",&n,&m))
{
if(n==0&&m==0) break;
for(int i=0;i<n;i++)
{
scanf("%s",&s[i]);
str[i]=s[i];
ans[i]=0;
}
sort(str,str+n);
string ss=str[0];
int k=0;
for(int i=1;i<n;i++)
{
if(ss==str[i])
k++;
else
{
ans[k]++;
k=0;
ss=str[i];
}
}
ans[k]++;
for(int i=0;i<n;i++)
printf("%d\n",ans[i]);
}
}