完美字符串

简介: 完美字符串

完美字符串

约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。

约翰不在乎字母大小写(也就是说字母A和a的完美度相同)。给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77。

Input

输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符。

Output

由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度。

Sample Input

dad

Sample Output

77

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char a[10010];
    int i, len, j, t;
    int b[10010];
    scanf("%s", a);
    len = strlen(a);
    memset(b,0,sizeof(b));
    for(i = 0; i < len; i++)
    {
        if(a[i] == 'a' || a[i] == 'A')
        {
            b[1]++;
        }
        if(a[i] == 'b' || a[i] == 'B')
        {
            b[2]++;
        }
        if(a[i] == 'c' || a[i] == 'C')
        {
            b[3]++;
        }
        if(a[i] == 'd' || a[i] == 'D')
        {
            b[4]++;
        }
        if(a[i] == 'e' || a[i] == 'E')
        {
            b[5]++;
        }
        if(a[i] == 'f' || a[i] == 'F')
        {
            b[6]++;
        }
        if(a[i] == 'g' || a[i] == 'G')
        {
            b[7]++;
        }
        if(a[i] == 'h' || a[i] == 'H')
        {
            b[8]++;
        }
        if(a[i] == 'i' || a[i] == 'I')
        {
            b[9]++;
        }
        if(a[i] == 'j' || a[i] == 'J')
        {
            b[10]++;
        }
        if(a[i] == 'k' || a[i] == 'K')
        {
            b[11]++;
        }
        if(a[i] == 'l' || a[i] == 'L')
        {
            b[12]++;
        }
        if(a[i] == 'm' || a[i] == 'M')
        {
            b[13]++;
        }
        if(a[i] == 'n' || a[i] == 'N')
        {
            b[14]++;
        }
        if(a[i] == 'o' || a[i] == 'O')
        {
            b[15]++;
        }
        if(a[i] == 'p' || a[i] == 'P')
        {
            b[16]++;
        }
        if(a[i] == 'q' || a[i] == 'Q')
        {
            b[17]++;
        }
        if(a[i] == 'r' || a[i] == 'R')
        {
            b[18]++;
        }
        if(a[i] == 's' || a[i] == 'S')
        {
            b[19]++;
        }
        if(a[i] == 't' || a[i] == 'T')
        {
            b[20]++;
        }
        if(a[i] == 'u' || a[i] == 'U')
        {
            b[21]++;
        }
        if(a[i] == 'v' || a[i] == 'V')
        {
            b[22]++;
        }
        if(a[i] == 'w' || a[i] == 'W')
        {
            b[23]++;
        }
        if(a[i] == 'x' || a[i] == 'X')
        {
            b[24]++;
        }
        if(a[i] == 'y' || a[i] == 'Y')
        {
            b[25]++;
        }
        if(a[i] == 'z' || a[i] == 'Z')
        {
            b[0]++;
        }
    }
    for(i = 0; i < 25; i++)
    {
        for(j = 0; j < 26 - i - 1; j++)
        {
            if(b[j] < b[j+1])
            {
                t = b[j];
                b[j] = b[j+1];
                b[j+1] = t;
            }
        }
    }
    int sum = 0;
    for(i = 0; i < 26; i++)
    {
        sum = (26 - i) * b[i] + sum;
    }
    printf("%d\n", sum);
    return 0;
}


相关文章
|
7月前
|
存储 C# C语言
字符串终止符
字符串终止符
585 2
|
存储 编译器
C 字符串
C 字符串。
53 0
|
7月前
|
C#
C#字符串
C#字符串
49 0
8 字符串
8 字符串
59 0
|
存储 安全 编译器
10.字符串
10.字符串
77 0
多行字符串
多行字符串
82 0
|
移动开发
长字符串/多行字符串
长字符串/多行字符串
106 0