这个题不男,
用map做非常简单,
map相关用法可以参考 map
题解参考注释
#include<bits/stdc++.h>
//#include<map>//用map要用这个头文件
using namespace std;
map<string,int> map1,map2;//声明两个map,string表示里面存的是string类型,int表示string的映射,有点像数组中元素和下标的关系
//一个用来保存每个单词,一个用来保存把单词排序后的结果
int main(){
int n,q;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
char s[15];
int len;
scanf("%s",s);//
len=strlen(s);
for(int j=0;j<len;j++)//注意大小写
if(s[j]>='a'&&s[j]<='z')
s[j]-=32;
map1[s]++;//这样可以在map中加入一个单词
sort(s,s+len);//排序是为了方便将互为anigram的单词匹配
map2[s]++;
}
scanf("%d",&q);
for(int i=1;i<=q;i++)
{
char s[15];
int len;
scanf("%s",s);
len=strlen(s);
for(int j=0;j<len;j++)
if(s[j]>='a'&&s[j]<='z')
s[j]-=32;
int a=map1[s];
sort(s,s+len);
int b=map2[s];
cout<<(b-a)<<endl;
}
return 0;
}