您的位置:首页 > 编程语言 > C语言/C++

华为OJ——名字的漂亮度

2016-07-03 20:21 417 查看
名字的漂亮度

题目描述

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

[b]输入描述:[/b]
整数N,后续N个名字

[b]输出描述:[/b]
每个名称可能的最大漂亮程度

[b]输入例子:[/b]
2
zhangsan
lisi
 

[b]输出例子:[/b]
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ C语言 OJ 华为 算法