正文

变位词2007-03-02 20:43:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiaoxiaofeng/23599.html

分享到:

福州大学第三届程序设计竞赛网上赛 变位词 时限:1秒 内存:32M 通过:7 提交:35 Mr. Right有一个奇怪的嗜好,就是看见一个单词就有找它所有的变位词的冲动。一个单词的变位词就是该单词所有字母的一个排列。 输入输出格式 输入数据第一行为一个整数n,1<=n<=10^5,之后n行每行只包含一个单词,不含词组。这些单词构成了Mr. Right的字典。每个单词长度不大于9个字母。接着一行为一个整数m,1<=m<=100,表示Mr. Right将看见的单词数。之后m行每行包含一个单词。(题目中出现的每个单词都只由小写字母组成)对应Mr. Right看到的每个单词,输出落在字典里的它的变位词的个数。 输入样例3 tea ate eat 3 ate abc tea 输出样例3 0 3   #include<iostream>#include<cstring>using namespace std;void ssort(char a[])    //对字符进行排序{ int i,j,l=strlen(a); char c; for(i=0;i<l-1;i++)  for(j=i+1;j<l;j++)   if(a[i]>a[j])   {    c=a[i];    a[i]=a[j];    a[j]=c;   }} int main(){ long n; int m,i,j; char (*cp)[9]; cin>>n; cp=new char[n][9]; for(i=0;i<n;i++) {  cin>>cp[i];  ssort(cp[i]);////对Mr. Right的字典中字符进行排序 }    char (*dp)[9]; cin>>m; dp=new char[m][9]; int *count=new int[m]; for(i=0;i<m;i++)count[i]=0; for(j=0;j<m;j++) {  cin>>dp[j];  ssort(dp[j]);//对Mr. Right将看见的单词中字符进行排序  for(i=0;i<n;i++)   if(strcmp(cp[i],dp[j])==0)count[j]++; } for(i=0;i<m;i++)cout<<count[i]<<endl;    delete []cp; delete []dp; delete count;    return 0;}

阅读(150) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册