字符串的完美度 求解,该怎么处理
字符串的完美度 求解
字符串的完美度
题目详情:
我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同,
而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。
现在给定一个字符串,输出它的最大可能的完美度。
例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。
函数头部
C
int perfect(const char *s);
C++
int perfect(const string &s);
java
public static int perfect(String s);
答题说明:
main函数用于方便自行编译,可不完成
字符串的完美度
题目详情:
我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同,
而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。
现在给定一个字符串,输出它的最大可能的完美度。
例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。
函数头部
C
int perfect(const char *s);
C++
int perfect(const string &s);
java
public static int perfect(String s);
答题说明:
main函数用于方便自行编译,可不完成
01.#include <stdio.h>
02.#include <stdlib.h>
03.#include <string.h>
04.
05.
06.int perfect(const char *s)
07.{
08. struct stu
09. {
10. char letter;
11. int num;
12. } ;
13.
14. struct stu *p,*p1,str[26];
15. int m=0,n,flag=0;
16. int max=26;
17. int i=0;
18. int mid=0,j,per=0;
19. p=str;
20. p1=str;
21. while(s[i]!='\0')
22. {
23. if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
24. {
25. for(n=0;n<m;n++)
26. {
27. if((s[i]-p->letter)==0||(s[i]-p->letter)==32||(s[i]-p->letter)==-32)
28. {
29. p->num++;
30. flag=1;
31. break;
32. }
33. else
34. {
35. p++;
36. }
37. }
38. if(flag==0)
39. {
40. p1->letter=s[i];
41. p1->num=1;
42. m++;
43. p1++;
44. }
45. flag=0;
46. p=str;
47. i++;
48. }
49. else
50. {
51. i++;
52. }
53. }
54. for(n=0;n<m;n++)
55. {
56. for(j=n;j<(m-1);j++)
57. {
58. if(str[j].num<str[j+1].num)
59. {
60. mid=str[j+1].num;
61. str[j+1].num=str[j].num;
62. str[j].num=mid;
63. }
64. }