广州疯狂软件学院拥有三大课程体系包括:java课程,android课程,ios课程,疯狂软件年终钜惠,报名java就业班,免费赠送基础班,名额有限,本月火热报名中,欢迎有志之士咨询疯狂java官网。

  题目如下:

  我们要给每个字母配一个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);

  思想就是对字符串中的字母进行统计,其中大小写忽略;

  while(s[i] != '\0')

  {

  index = s[i] - 'A';

  if(index >= 32)

  index -= 32;

  count[index]++;

  i++;

  }

  建立数组s[26],下标分别对应‘A','B'...’Z',若是小写字母的话-‘A'后下标>=32,减去即可(根据ASCII值操作);

  将字母发生的个数统计出来后,进行排序(这是升序,降序也可)

  qsort(count, 26, sizeof(int), comp);

  最后我们计算亲密度即可,由于是升序,所以亲密度也是由1-26;这样亲密度最大

  for(i = 0; i < 26; i++)

  {

  value += count[i] * (i + 1);

  }

  这样完美的亲密度就出来了:

  #include

  #include

  int comp(const void *a,const void *b)

  {

  return *(int *)a-*(int *)b;

  }

  int perfect(const char *s)

  {

  int i = 0;

  int index = 0;

  int value = 0;

  int count[26] = {0};

  while(s[i] != '\0')

  {

  index = s[i] - 'A';

  if(index >= 32)

  index -= 32;

  count[index]++;

  i++;

  }

  qsort(count, 26, sizeof(int), comp);

  for(i = 0; i < 26; i++)

  {

  value += count[i] * (i + 1);

  }

  return value;

  }

  int main()

  {

  printf("%d", perfect("dad"));

  return 0;

  }

  疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。技术知识沉淀深厚的老师,让你感受Java的魅力,激发你对于编程的热爱,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,成为真正的技术高手;通过大量全真企业项目疯狂训练,迅速积累项目经验。让你成为技能型的现代化高端人才,迅速获得高薪就业!时间不等人,赶紧联系我们吧!疯狂java培训中心地址:广州天河区车陂沣宏大厦3楼。

  疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。疯狂软件开设了java课程,ios课程,android课程,为你提供一个学习java技能的好机会,疯狂软件特大优惠活动,加疯狂软件微信号(疯狂软件),抢优惠,优惠100元+赠送iOS教材一本 详情请看疯狂java培训官网。IT从业着仍是社会所需要的高端人才,广州疯狂软件之力于培养企业所需要的中高端IT人才,让你成为备受企业青睐的人才。