这一道题注意一下字母顺序问题就ok
#include<stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <queue>
#include <map>
#include <string>
using namespace std;
map<string,bool>q;
char p[1005];
string s;
bool vis[30];
int main()
{
q.clear();
int t,l,sum=0;
scanf("%d",&t);
for(int i=0;i<t;i++)
{
memset(vis,0,sizeof(vis));
s.clear();
scanf("%s",p);
l=strlen(p);
for(int i=0;i<l;i++)
vis[p[i]-'a']=1;
for(int i=0;i<26;i++)
{
if(vis[i])
s+='a'+i;
}
if(!q[s])
sum++;
q[s]=1;
}
printf("%d\n",sum);
return 0;
}