给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
http://career-oj.huawei.com/exam/ShowProblemInfo?method=campusProblemInfo&id=228
这道题目一直显示格式错误:
下面是提交的代码:
1 #include<iostream> 2 #include<vector> 3 #include<string> 4 #include<map> 5 using namespace std; 6 7 map<char,int> ha; 8 9 void sorted(vector<int>& vec) 10 { 11 int len=vec.size(); 12 int temp; 13 for(int i=0;i<len-1;i++) 14 for(int j=i+1;j<len;j++) 15 if(vec[j]<vec[i]) 16 { 17 temp=vec[i]; 18 vec[i]=vec[j]; 19 vec[j]=temp; 20 } 21 } 22 vector<int> piaoliangdu(vector<string>& vec) 23 { 24 vector<int> rev; 25 vector<int> v; 26 int len=vec.size(); 27 for(int i=0;i<len;i++) 28 { 29 string s=vec[i]; 30 for(string::iterator iter1=s.begin();iter1!=s.end();iter1++) 31 if(*iter1<‘a‘||*iter1>‘z‘) 32 *iter1=*iter1+32; 33 ha.clear(); 34 for(string::iterator iter1=s.begin();iter1!=s.end();iter1++) 35 { 36 if(ha.count(*iter1)==0) 37 ha[*iter1]=1; 38 else 39 ha[*iter1]++; 40 } 41 v.clear(); 42 for(map<char,int>::iterator j=ha.begin();j!=ha.end();j++) 43 v.push_back(j->second); 44 sorted(v); 45 46 int du=26; 47 int re=0; 48 for(vector<int>::reverse_iterator j=v.rbegin();j!=v.rend();j++) 49 { 50 re=re+(du*(*j)); 51 du--; 52 } 53 rev.push_back(re); 54 } 55 return rev; 56 } 57 58 int main() 59 { 60 int n; 61 vector<string> vec; 62 string s; 63 cin>>n; 64 while(n--) 65 { 66 cin>>s; 67 vec.push_back(s); 68 } 69 70 vector<int> rev=piaoliangdu(vec); 71 vector<int>::iterator i; 72 for(i=rev.begin();i!=rev.end()-1;i++) 73 cout<<*i<<‘ ‘; 74 cout<<*i<<endl; 75 system("pause"); 76 77 }
时间: 2024-09-28 23:49:38