1. 程式人生 > >51Nod1095 Anigram單詞(map+sort)

51Nod1095 Anigram單詞(map+sort)

這道題思路很簡單,用map容器維護,把原有的字串放入一個map,然後排完序後的字串放入另一個map容器。

第一個map容器作用是判斷某字串是否出現過,第二個字串作用是記錄排序後字串出現的次數。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
int main()
{
	int n,i;
	cin>>n;
	map<string,int> mp;
	map<string,int> mpp;
	for(i=0;i<n;i++)
	{
		char str[12];
		scanf("%s",str);
		mpp[str]++;
		sort(str,str+strlen(str));
		mp[str]++;
	}
	int q;
	cin>>q;
	while(q--)
	{
		char a[12];
		scanf("%s",a);
		int flag=0;
		if(mpp.find(a)!=mpp.end()) flag=-1;
		sort(a,a+strlen(a));
		if(mp.find(a)!=mp.end()) cout<<mp[a]+flag<<endl;
		else cout<<"0"<<endl;
	}
}