完美字符串咋用c语言写啊

img

救命啊,C语言老师发的题

先统计每个字母出现的次数,出现次数最多的分配最大的完美数。

img

代码如下:

#include <stdio.h>
int main()
{
    char buf[1000]={0};
    int a[26],i,j,index,t,s=0,ff=26;
    for(i=0;i<26;i++)
        a[i] = 0;
    gets(buf); //读取字符串
    i = 0;
    while(buf[i] !='\0')
    {
        if(buf[i]>='a' && buf[i]<='z')
        {
            index = buf[i] - 'a';
            a[index]++;
        }else if(buf[i]>='A' && buf[i]<='Z')
        {
            index = buf[i] - 'A';
            a[index]++;
        }
        i++;
    }
    //按出现的次数排序
    for (i=0;i<25;i++)
    {
        for(j=0;j<25-i;j++)
        {
            if(a[j] < a[j+1])
            {
                t = a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    //计算
    for (i=0;i<26;i++)
    {
        s += ff * a[i];
        ff--;
    }
    printf("%d",s);
    return 0;

}