0
已解决
李奕歌
初级天翼
初级天翼
题目描述 Description
明明和聪聪是**,看着聪聪整天在他面前摆弄着那块神奇的镜片,明明有点生气,总想找个机会挫挫他的锐气,但是为了不**他们之间的友谊,明明给聪聪出了一道难题,题目是这样的:
明明在学习英语的时候发现记单词是一件很痛苦的事,因为这些单词都杂乱无章,于是明明决定对单词进行分类。两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等,例如“AABAC”,它和“CBAAA”就可以归为一类,而和“AAABB”就不是一类。现在有N个单词,所有单词均由大写字母组成,每个单词的长度不超过100。请你告诉明明这些单词会被分成几类。
输入描述 Input Description
输入文件的第一行为单词个数N,以下N行每行一个单词。
【数据范围】
对于70%的数据满足N≤100;
对于100%的数据满足N≤550。
输出描述 Output Description
输出文件仅包含一个数,表示这N个单词分成的类数。
样例输入 Sample Input
3 AABAC CBAAA AAABB
样例输出 Sample Output
2
李奕歌在2021-08-07 08:51:56追加了内容
@王文博 WA 15:
#include <bits/stdc++.h>
using namespace std;
string a[551];
int n,cnt;
bool judge(int x);
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
if(judge(i)){
cnt++;
}
}
cout<<cnt-1;
return 0;
}
bool judge(int x){
for(int i=1;i<x;i++){
if(a[i]==a[x]){//计算过了
return false;
}
}
return true;
}
李奕歌在2021-08-07 08:52:01追加了内容
@王文博 WA 15:
#include <bits/stdc++.h>
using namespace std;
string a[551];
int n,cnt;
bool judge(int x);
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
if(judge(i)){
cnt++;
}
}
cout<<cnt-1;
return 0;
}
bool judge(int x){
for(int i=1;i<x;i++){
if(a[i]==a[x]){//计算过了
return false;
}
}
return true;
}
0
已采纳
王文博
缔造者之神
缔造者之神
bool judge(int x)
{
for(int i=1;i<x;i++)
{
if(a[i]==a[x]) return false;
}
return true;
}
for(int i=1;i<=n;i++)
{
cin>>a[i];
sort(a[i].begin(),a[i].end());
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
if(judge(i)) cnt++;
}
0
0
0