51nod 1095 Anigram单词

题目在此

这个题不男,

用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;
} 


猜你喜欢

转载自blog.csdn.net/jiangbojun2017/article/details/80725976