Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1414953
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-11 22:27
个人简介

--

文章分类

全部博文(241)

文章存档

2021年(3)

2019年(6)

2018年(1)

2017年(9)

2016年(21)

2015年(50)

2014年(125)

2013年(26)

我的朋友

分类: C/C++

2014-03-21 14:47:45

1、题目描述:
一个名字用一个漂亮度来衡量,名字均是字母组成,不区分大小写,字母‘A’~‘Z’每个字母1~26的漂亮度,字母的漂亮数值不定,名字最大的漂亮值作为名字的漂亮度。
2、题目分析:
字符串处理问题,字母的漂亮值不定,所以根据字母出现次数,次数越多的则为大的漂亮值,越少的越少结果就会漂亮度越大。
3、代码

点击(此处)折叠或打开

  1. #include<stdio.h>

  2. #define MAX 100
  3. #define Alpha 26

  4. int cal_deauty(char* str)
  5. {
  6.     char* pStr = str;
  7.     int num[Alpha] = {0};
  8.     int sum=0;
  9.     int i;
  10.     int j;
  11.     int tmp;
  12.     int start = 26;
  13.     if (NULL == str)
  14.     {
  15.         return 0;
  16.     }

  17.     while (*pStr != '\0')
  18.     {
  19.         if (*pStr>='a'&&*pStr<='z')
  20.         {
  21.             num[*pStr -'a']++;
  22.         }
  23.         else if (*pStr>='A'&&*pStr<='Z')
  24.         {
  25.             num[*pStr -'a']++;
  26.         }
  27.         pStr++;
  28.     }
  29.     for (i=0; i<Alpha; i++)
  30.     {
  31.         for (j=i+1; j<Alpha; j++)
  32.         {
  33.             if (num[i]<num[j])
  34.             {
  35.                 tmp = num[i];
  36.                 num[i] = num[j];
  37.                 num[j] = tmp;
  38.             }
  39.         }
  40.     }
  41.     for (i=0; i<Alpha; i++)
  42.     {
  43.         if (num[i] != 0)
  44.         {
  45.             sum += num[i]*start;
  46.             --start;
  47.         }
  48.         else
  49.         {
  50.             break;
  51.         }
  52.     }
  53.     return sum;
  54. }

  55. int main()
  56. {
  57.     int N = 0;
  58.     int i;
  59.     char str[MAX][MAX]={0};
  60.     int beauty_value[MAX]={0};
  61.     scanf("%d",&N);
  62.     if (N<=0)
  63.     {
  64.         return 0;
  65.     }
  66.     for (i=0; i<N; i++)
  67.     {
  68.         scanf("%s",str[i]);
  69.     }
  70.     for (i=0; i<N; i++)
  71.     {
  72.         printf("%d\n",cal_deauty(str[i]) );
  73.     }
  74.     return 0;
  75. }

阅读(1874) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~