Aramic脚本
时间: 1ms 内存:128M
描述:
在Aramic语言中,单词只能代表对象
Aramic中的单词有以下特殊属性:
1. 如果一个单词不包含相同的字母,则该单词是根。
2. 一个根和他的所有排列表示一个单词
3. 例如 :“aaaa” , “aaa” ,”aa” 的根为”a” “aabb”,”abab”,”baabb” 的根为”ab”
问脚本中提到的不同对象的数量是多少?
输入:
第一行为一个整数 n (1<=n <= 1000)。
第二行为n个单词,每个单词的长度不超过1000。 保证输入的单词由小写字母组成
输出:
输出一个整数,给定古代Aramic脚本中提到的不同对象的数量。
示例输入:
5
a aa aaa ab abb
示例输出:
2
提示:
参考答案(内存最优[2024]):
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<ctime>
using namespace std;
int main()
{
int T,n=0,sum=0;
cin>>T;
string s,str[1002];
while(T--){
cin>>s;
sort(s.begin(),s.end());
for(int i=1;i<s.length();i++){
if(s[i]==s[i-1]){
s.erase(i-1,1);
i--;
}
}str[n++]=s;
//cout<<"s :"<<s<<endl;
}
for(int i = 0;i<n;i++){
if(str[i]!="000")
sum++;
else
continue;
for(int j = i+1;j<n;j++){
if(str[i]==str[j]){
str[j]="000";
}
}
}
cout<<sum<<endl;
return 0;
}
参考答案(时间最优[4]):
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
using namespace std;
string s;
int n;
int main()
{
ios_base::sync_with_stdio(false);
set<string> st;
cin >> n;
for (int i = 0;i < n;++i)
{
cin >> s;
sort(s.begin(), s.end());
s.erase(unique(s.begin(), s.end()), s.end());
st.insert(s);
}
cout << st.size() << endl;
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。