SDUT 3300 完美字符串

来源:互联网 发布:mmd 动作数据 r 18 编辑:程序博客网 时间:2024/06/02 18:54

题目描述

一个字符串的完美度是它里面所有字符的完美度之和,每个字符的完美度都不相同,分别对应1-26中的一个整数,你可以随意给每个字符一个完美度

字符不区分大小写,即’a’和’A’的完美度是相同的,给定一个字符串,输出它的最大可能的完美度

输入

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

输出

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

示例输入

dadEYBQTBTKQJ

示例输出

77236


#include <stdio.h>#include <string.h>#include <iostream>using namespace std;char str[10000],t;int a[10000],x;int main(){    while(~scanf("%s",str))    {        memset(a,0,sizeof(a));        int sum=0,l=strlen(str);        for(int i=0;i<l;i++)            if(str[i]>='a' && str[i]<='z')                str[i]=str[i]-32;        for(int i=0;i<l-1;i++)            for(int j=0;j<l-i-1;j++)            if(str[j]>str[j+1])        {            t=str[j];            str[j]=str[j+1];            str[j+1]=t;        }        a[str[0]-65]=1;        for(int i=1;i<l;i++)        {            if(str[i]==str[i-1])                a[str[i]-65]++;            else                a[str[i]-65]=1;        }        for(int i=0;i<25;i++)            for(int j=0;j<25-i;j++)        {            if(a[j]<a[j+1])            {                x=a[j];                a[j]=a[j+1];                a[j+1]=x;            }        }        for(int i=0;i<26;i++)        {            sum=sum+(26-i)*a[i];        }        printf("%d\n",sum);    }    return 0;} 



 
0 0
原创粉丝点击