编程练习:名字的漂亮度

Posted Disen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程练习:名字的漂亮度相关的知识,希望对你有一定的参考价值。

题目来源:华为OJ
 1 // nameBeautyDegree.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include <iostream>
 6 #include <stdlib.h>
 7 #include <string>
 8 #include <map>
 9 using namespace std;
10 //冒泡排序
11 void sort(int *array,size_t num)
12 {
13     size_t i,j,temp;
14     for(i=num;i>1;i--)
15     for(j=0;j<i-1;j++){
16         if(array[j]<array[j+1]){
17             temp=array[j];
18             array[j]=array[j+1];
19             array[j+1]=temp;
20         }
21     }
22 } 
23 //计算一个名字的漂亮度
24 int nameValue(char* name)
25 {
26     map<char,int> myMap;//某个字母出现的次数 
27     map<char,int>::iterator ite;
28     size_t size=strlen(name);//名字的长度
29     unsigned int i;//for循环
30     int chValue[50];//字符出现的次数 
31     int k=26;//漂亮度 
32     int nValue=0;//名字的漂亮度 
33     //遍历名字中的字符,将字符及其出现的次数插入myMap中
34     for(i=0;i<size;i++){
35         ite=myMap.find(name[i]);
36         if(ite!=myMap.end())
37             ite->second+=1;
38         else
39             myMap.insert(pair<char,int>(name[i],1));
40     }
41     //得到所有字符出现的次数 
42     ite=myMap.begin();
43     for(i=0;i<myMap.size();i++)
44     {
45         chValue[i]=ite->second;
46         ite++;
47     }
48     //对所有字符出现的次数进行排序
49     sort(chValue,myMap.size());
50     //计算名字的漂亮度 
51     for(i=0;i<myMap.size()-1;i++){//i遍历次数为myMap.size()-1,因为最后一个字符是换行符
52         nValue+=(chValue[i])*k;
53         k--;    
54     }
55     return nValue;
56 } 
57 int main() {
58     unsigned int n;
59     unsigned int i;
60     cin>>n;//输入名字个数
61     if(n<=0)//个数小于0,返回
62             return 0;
63     int ch;
64     ch=getchar();//接收回车符
65     char name[10][50];//存放n个名字
66     //接收名字
67     for(i=0;i<n;i++)
68     {
69         fgets(name[i],50,stdin);//接收名字,以回车符作为结束标志,同时把回车符也送进了名字里,注意处理掉
70     }
71     //打印每个名字的漂亮度
72     for(i=0;i<n;i++)
73         cout<<nameValue(name[i])<<endl;//调用函数nameValue()
74     return 0;
75 }


以上是关于编程练习:名字的漂亮度的主要内容,如果未能解决你的问题,请参考以下文章

华为机试HJ45:名字的漂亮度

华为机试HJ45:名字的漂亮度

11章 编程练习题 11.8

函数的练习2——python编程从入门到实践

HihoCoder1640 : 命名的烦恼([Offer收割]编程练习赛36)()

HihoCoder1644 : 完美命名的烦恼([Offer收割]编程练习赛37)(有向图的一笔画问题||欧拉路)