题解 | #名字的漂亮度#
名字的漂亮度
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; }