名字的美丽度

做了几遍   不是格式错误就是答案错误 = =  是输入的格式不对。最后终于成功了。  

下面的程序在电脑上可以正常运行。

总结一下:既然用到了algorithm的sort函数 就不需要用冒泡排序了  直接进行sort即可。

利用ctype.h的tolower函数将大写字母转化为小写字母。 然后利用小写字母和数字之间的ASCII码关系进行数列序数的变换。



#include<iostream>
#include<string>
#include<vector>
#include<sstream>
#include<algorithm>


using namespace std;


int maxbeauty(string len){//先将字符串排序  然后计算有多少种字母,各有多少个。对个数进行从大到小的冒泡排序,然后求得最大美丽值。
sort(len.begin(), len.end());
int beauty[26];
for (int i = 0; i < 26; i++){
beauty[i] = 1;
}
int j = 0;
for (int i = 1; i < len.size() ; i++){
if (len[i] == len[i - 1]){
beauty[j] = beauty[j] + 1;
}
else{
j++;
}
}
int temp = 0;
for (int i = 0; i < j + 1; i++){
for (int k = 0; k < j + 1 - i; k++){
if (beauty[k] < beauty[k + 1]){
temp = beauty[k];
beauty[k] = beauty[k + 1];
beauty[k + 1] = temp;
}
}
}
int be= 0;
for (int i = 0; i < j +1; i++){
be = be + beauty[i] * (26 - i);
}
return be;
}


/*void main(){
int a;
cin >> a;
string str, word;//用字符串流的方式来处理输入数据
getline(cin, str);
stringstream istr(str);

while (istr >> word){
int b = maxbeauty(word);
cout << b <<endl;


}


//system("pause");
return;
}*/
/*void main(){
//cout << "输入:" << endl;
int n, i;
string s;
cin >> n;
int *len = new int[n];
for (i = 0; i < n; i++){
cin >> s;
len[i] = maxbeauty(s);
}
cout << endl << "输出:" << endl;
for (i = 0; i < n; i++)
cout << len[i] << endl;
system("pause");
}*/
void main()
{

string str, name;
int n;
int b;
cin >> n;
for (int i = 1; i <= n; i++){
        cin>>name;
b = maxbeauty(name);
cout << b << endl;
}





system("pause");
return ;
}




下面贴几个从别处转来的程序

huhuichun:

#include<iostream>
#include<algorithm>
#include<ctype.h>
using namespace std;
int Beauty(char a[])  //计算一个字符串的最大漂亮度
{
 int b[26]={0};  //存储每个字符的个数
 int sum=0;
 for(int i=0; a[i]!='\0'; i++)
  a[i]=tolower(a[i]);  //全部先转换成小写
 for(int i=0; a[i]!='\0'; i++)
  b[a[i]-97]++;
 sort(b,b+26);
 for(int i=25; i>=0; i--)
  sum+=(i+1)*b[i];
 return sum;
}

int main()
{   
 int M;
 char array[100][100];
 cin>>M;
 getchar(); //清除回车
 for(int i=0;i<M;i++)
  gets(array[i]);
 for(int i=0;i<M;i++)
  cout<<Beauty(array[i])<<endl; 
 return 0;
}

sherry_0720

  1. #include<iostream>    
  2. #include<string>    
  3. using namespace std;   
  4. int meili(string s){  
  5.     int a[26] = { 0 };  
  6.     int l = s.size(),pos;  
  7.     int i, j,temp,len=0;  
  8.     for (i = 0; i < l; i++){  
  9.         if (isupper(s[i]))  
  10.             pos = s[i] - 65;  
  11.         else  
  12.             pos = s[i] - 97;  
  13.         a[pos]++;  
  14.     }  
  15.     for (i = 0; i < 25; i++){  
  16.         for (j = 0; j < 25 - i; j++){  
  17.             if (a[j] < a[j + 1]){  
  18.                 temp = a[j];  
  19.                 a[j] = a[j + 1];  
  20.                 a[j + 1] = temp;  
  21.             }  
  22.         }  
  23.     }  
  24.     for (i = 0; a[i] != 0&&i<26; i++)  
  25.         len += (26 - i)*a[i];  
  26.     return len;  
  27.   
  28. }  
  29. void main(){  
  30.     cout << "输入:"<<endl;  
  31.     int n,i;  
  32.     string s;  
  33.     cin >> n;  
  34.     int *len = new int[n];  
  35.     for (i = 0; i < n; i++){  
  36.         cin >> s;  
  37.         len[i] = meili(s);  
  38.     }  
  39.     cout <<endl<< "输出:" << endl;  
  40.     for (i = 0; i < n; i++)  
  41.         cout << len[i] << endl;  
  42.     system("pause");  
  43. }  
这几个官网给的优秀程序都是用case的  感觉有点繁琐

  1. #include <iostream>    
  2. #include <string>    
  3. #include <algorithm>    
  4. using namespace std;    
  5. int main()    
  6. {    
  7.    void pretty_name();    
  8.     string str,name;    
  9.     int n;    
  10.     cin>>n;    
  11.     for (int i=1;i<=n;i++)    
  12.         pretty_name();    
  13.        
  14.       
  15.     return 0;  
  16. }    
  17.     
  18.     
  19. void pretty_name()    
  20. {    
  21.     string name;    
  22.     int num[26]={0},pretty=0;    
  23.     cin>>name;    
  24.     for (int i=0;i<name.length();i++)    
  25.         switch(name[i])    
  26.           {    
  27.             case 'a':num[0]++;break;    
  28.             case 'b':num[1]++;break;    
  29.             case 'c':num[2]++;break;    
  30.             case 'd':num[3]++;break;    
  31.             case 'e':num[4]++;break;    
  32.             case 'f':num[5]++;break;    
  33.             case 'g':num[6]++;break;    
  34.             case 'h':num[7]++;break;    
  35.             case 'i':num[8]++;break;    
  36.             case 'j':num[9]++;break;    
  37.             case 'k':num[10]++;break;    
  38.             case 'l':num[11]++;break;    
  39.             case 'm':num[12]++;break;    
  40.             case 'n':num[13]++;break;    
  41.             case 'o':num[14]++;break;    
  42.             case 'p':num[15]++;break;    
  43.             case 'q':num[16]++;break;    
  44.             case 'r':num[17]++;break;    
  45.             case 's':num[18]++;break;    
  46.             case 't':num[19]++;break;    
  47.             case 'u':num[20]++;break;    
  48.             case 'v':num[21]++;break;    
  49.             case 'w':num[22]++;break;    
  50.             case 'x':num[23]++;break;    
  51.             case 'y':num[24]++;break;    
  52.             case 'z':num[25]++;break;    
  53.             case 'A':num[0]++;break;    
  54.             case 'B':num[1]++;break;    
  55.             case 'C':num[2]++;break;    
  56.             case 'D':num[3]++;break;    
  57.             case 'E':num[4]++;break;    
  58.             case 'F':num[5]++;break;    
  59.             case 'G':num[6]++;break;    
  60.             case 'H':num[7]++;break;    
  61.             case 'I':num[8]++;break;    
  62.             case 'J':num[9]++;break;    
  63.             case 'K':num[10]++;break;    
  64.             case 'L':num[11]++;break;    
  65.             case 'M':num[12]++;break;    
  66.             case 'N':num[13]++;break;    
  67.             case 'O':num[14]++;break;    
  68.             case 'P':num[15]++;break;    
  69.             case 'Q':num[16]++;break;    
  70.             case 'R':num[17]++;break;    
  71.             case 'S':num[18]++;break;    
  72.             case 'T':num[19]++;break;    
  73.             case 'U':num[20]++;break;    
  74.             case 'V':num[21]++;break;    
  75.             case 'W':num[22]++;break;    
  76.             case 'X':num[23]++;break;    
  77.             case 'Y':num[24]++;break;    
  78.             case 'Z':num[25]++;break;    
  79.           }    
  80.     sort(num,num+26);    
  81.     for (int i=0;i<26;i++)    
  82.         pretty=pretty+(i+1)*num[i];    
  83.     
  84.     cout<<pretty<<endl;    
  85.     
  86. }    


  1. #include <iostream>  
  2. #include <stdio.h>  
  3. #include <cstring>  
  4. #include <stdlib.h>  
  5. #define length 30  
  6. #define row 20  
  7. #define alphabat 26  
  8. using namespace std;  
  9. void bijiao(int count,char str[][length]);  
  10. int main()  
  11. {  
  12.     char str[row][length] = {};  
  13.     int i = 0;  
  14.   
  15.     int count;  
  16.     cin>>count;  
  17.     for(i = 0;i < count;i++)  
  18.     {  
  19.         cin>>str[i];  
  20.     }  
  21.     bijiao(count,str);  
  22.     return 0;  
  23. }  
  24. void bijiao(int count,char str[][length])  
  25. {  
  26.     int i = 0,j = 0;  
  27.     int k = 0,l = 0;  
  28.     int counter[alphabat] = {0};  
  29.     int temp = 0;  
  30.     int result = 0;  
  31.   
  32.     for(i = 0;i < count;i++)  
  33.     {  
  34.   
  35.         for(j = 0;j < length;j++)  
  36.         {  
  37.             switch(str[i][j])  
  38.             {  
  39.             case 'a':counter[0]++;break;  
  40.             case 'A':counter[0]++;break;  
  41.             case 'b':counter[1]++;break;  
  42.             case 'B':counter[1]++;break;  
  43.             case 'c':counter[2]++;break;  
  44.             case 'C':counter[2]++;break;  
  45.             case 'd':counter[3]++;break;  
  46.             case 'D':counter[3]++;break;  
  47.             case 'e':counter[4]++;break;  
  48.             case 'E':counter[4]++;break;  
  49.             case 'f':counter[5]++;break;  
  50.             case 'F':counter[5]++;break;  
  51.             case 'g':counter[6]++;break;  
  52.             case 'G':counter[6]++;break;  
  53.             case 'h':counter[7]++;break;  
  54.             case 'H':counter[7]++;break;  
  55.             case 'i':counter[8]++;break;  
  56.             case 'I':counter[8]++;break;  
  57.             case 'j':counter[9]++;break;  
  58.             case 'J':counter[9]++;break;  
  59.             case 'k':counter[10]++;break;  
  60.             case 'K':counter[10]++;break;  
  61.             case 'l':counter[11]++;break;  
  62.             case 'L':counter[11]++;break;  
  63.             case 'm':counter[12]++;break;  
  64.             case 'M':counter[12]++;break;  
  65.             case 'n':counter[13]++;break;  
  66.             case 'N':counter[13]++;break;  
  67.             case 'o':counter[14]++;break;  
  68.             case 'O':counter[14]++;break;  
  69.             case 'p':counter[15]++;break;  
  70.             case 'P':counter[15]++;break;  
  71.             case 'q':counter[16]++;break;  
  72.             case 'Q':counter[16]++;break;  
  73.             case 'r':counter[17]++;break;  
  74.             case 'R':counter[17]++;break;  
  75.             case 's':counter[18]++;break;  
  76.             case 'S':counter[18]++;break;  
  77.             case 't':counter[19]++;break;  
  78.             case 'T':counter[19]++;break;  
  79.             case 'u':counter[20]++;break;  
  80.             case 'U':counter[20]++;break;  
  81.             case 'v':counter[21]++;break;  
  82.             case 'V':counter[21]++;break;  
  83.             case 'w':counter[22]++;break;  
  84.             case 'W':counter[22]++;break;  
  85.             case 'x':counter[23]++;break;  
  86.             case 'X':counter[23]++;break;  
  87.             case 'y':counter[24]++;break;  
  88.             case 'Y':counter[24]++;break;  
  89.             case 'z':counter[25]++;break;  
  90.             case 'Z':counter[25]++;  
  91.             }  
  92.         }  
  93.         for(k = 1;k < alphabat;k++)  
  94.         {  
  95.             for(l = k;l > 0;l--)  
  96.             {  
  97.                 if(counter[l] > counter[l-1])  
  98.                 {  
  99.                     temp = counter[l];  
  100.                     counter[l] = counter[l-1];  
  101.                     counter[l-1] = temp;  
  102.                 }  
  103.             }  
  104.         }  
  105.         for(k = 0;k < alphabat;k++)  
  106.         {  
  107.             result += counter[k] * (alphabat - k);  
  108.         }  
  109.         cout<<result<<endl;  
  110.         result = 0;  
  111.         for(k = 0;k < alphabat;k++)  
  112.         {  
  113.             counter[k] = 0;  
  114.         }  
  115.     }  
  116. }  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值