您的位置:首页 > 其它

名字的漂亮度

2015-07-27 18:21 120 查看
给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。输入:整数N,后续N个名字N个字符串,每个表示一个名字输出:每个名称可能的最大漂亮程度样例输入:
2
zhangsan
lisi
样例输出:
192
101
思路:题目没有描述清楚:名字的漂亮度=26*字母个数最多的+25*字母个数其次的+24*字母个数再其次的……其中要计算每个字母出现的频次
#include<iostream>#include<cstdio>#include<cstdlib>#include<vector>#include<algorithm>#include<string>#include<functional>//#include<cmath>using namespace std;int HashTable[26];//统计26个小写字母出现的次数bool compare(const int &a,const int &b){return a>b;}int main(){int n;cin>>n;while(n--){for(int i=0;i<26;i++){HashTable[i]=0;}string str;// getline(cin,str);cin>>str;for(int i=0;i<str.size();i++) //将大写字母转换为小写字母{if(str[i]>='A'&&str[i]<='Z'){str[i]=str[i]+32;}}for(int i=0;i<str.size();i++) //统计每个字符出现的次数{HashTable[str[i]-'a']++;}sort(HashTable,HashTable+26,compare);int sum=0;int index=0;for(int i=26;i>=0&&HashTable[index]!=0;i--){sum+=i*HashTable[index++];}cout<<sum<<endl;}return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: