华为OJ——名字的漂亮度

来源:互联网 发布:保利科技 工作 知乎 编辑:程序博客网 时间:2024/04/29 23:35

名字的漂亮度

题目描述

给出一个名字,该名字有26个字符串组成,定义这个字符串的漂亮度是其所有字母漂亮度的总和。
每个字母都有一个漂亮度,范围在126之间。没有任何两个字母拥有相同的漂亮度。字母忽略大小写。
给出多个名字,计算每个名字最大可能的漂亮度

输入描述:

整数N,后续N个名字

输出描述:

每个名称可能的最大漂亮程度

输入例子:

2

zhangsan

lisi

 

输出例子:

192

101

解答代码:

#include<iostream>#include<fstream>#include<cstring>#include<string>#include<algorithm>using namespace std;void sortA(int array[]){    int i,j;    int index=0;    for(i=0; i<26-1; i++)    {        index=i;        for(j=i+1; j<26; j++)        {            if(array[j]>array[index])                index=j;        }        int temp=array[i];        array[i]=array[index];        array[index]=temp;    }}int main(){    char words[10000];    //数据表统计各个字母出现的次数    int wordsCount[26];    int n,i,j;    while(cin>>n)    {        for(int k=0; k<n; k++)        {            cin>>words;            //memset(wordsCount,0,sizeof(wordsCount));            for(i=0; i<26; i++)                wordsCount[i]=0;            int length=strlen(words);            int result=0;            int data=26;            for(i=0; i<length; i++)            {                if(words[i]>='A' && words[i]<='Z')                    wordsCount[words[i]-'A']++;                else if(words[i]>='a' && words[i]<='z')                    wordsCount[words[i]-'a']++;            }            sortA(wordsCount);            for(i=0; i<26; i++)            {                if(wordsCount[i]!=0)                {                    result+=data*wordsCount[i];                    data--;                }                else                    break;            }            cout<<result<<endl;        }    }    return 0;}

0 0
原创粉丝点击