/*主要思想:
1:输入
2:与前面的比较
3:如果都不相同存进a数组-->---
4:否则不存 |
*/ // |
#include<iostream>// |
#include<cstdio>// |
#include<cstring>// |
using namespace std;// |
char a[10010][110];//<--<---<--<--
bool pd(char x[],char y[]){ //判断是否是同类单词函数
int c[26]={},d[26]={},s=strlen(x),ss=strlen(y);
if(s!=ss){
return false; //如果长度不一样直接返回false
}
for(int i=0;i<=s-1;i++){
c[x[i]-'A']++; //}统计字母个数
d[y[i]-'A']++; //}
}
for(int i=0;i<=25;i++){
if(c[i]!=d[i]){
return false; //比较
}
}
return true;
}
int main(){
int n,l=0,p; //l是现有的组数,也是a里存的单词个数;p=strlen(a[l]);
cin>>n;
for(int i=1;i<=n;i++){
scanf("%s",a[l]);//输入
for(int j=0;j<=l-1;j++){//与前面的单词比较
if(pd(a[l],a[j])){//如果是一类
p=strlen(a[l]);
for(int k=0;k<=p-1;k++){
a[l][k]=0; //清除
}
--l; //个数-1
break;
}
}
++l;//个数+1(如果这个单词不是新的一类,+1就与上面 -1抵消了 )
}
cout<<l;//输出
}
这个代码能优化吗?
还是说我只能用sort。。。