题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
#include <stdio.h>
struct beauty{
char a;
int n;
};
int main() {
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++){
char a[10000],b;
int m=0,j,k,p;
scanf("%s",a);
while(a[m]!=0)m++;
//初步排序
for(j=0;j<m-1;j++)
for(k=0;k<m-j-1;k++)
if(a[k]>a[k+1]){
b=a[k];
a[k]=a[k+1];
a[k+1]=b;
}
//数据导入结构体
struct beauty t[m],temp;
for(j=0;j<m;j++)
t[j].a=a[j];
//开始计数
for(j=0;j<m;j++){
p=0;
for(k=0;k<m;k++)
if(a[j]==a[k])
p++;
t[j].n=p;
}
//去除重复
for(j=0;j<m;j++)
if(t[j].a==t[j+1].a){
for(k=j;k<m;k++)
t[k]=t[k+1];
j--;
m--;
}
//再次排序
for(j=0;j<m-1;j++)
for(k=0;k<m-j-1;k++)
if(t[k].n<t[k+1].n){
temp=t[k];
t[k]=t[k+1];
t[k+1]=temp;
}
//计算漂亮度
int pl=0;
for(j=0;j<m;j++)
pl=pl+(26-j)*t[j].n;
//输出
printf("%d\n",pl);
}
return 0;
}
阿里云成长空间 733人发布