蓝桥杯 省赛c语言(第七题)

蓝桥杯 省赛c语言(第七题)
x星球有26只球队,分别用a~z的26个字母代表。他们总是不停地比赛。
在某一赛段,哪个球队获胜了,就记录下代表它的字母,这样就形成一个长长的串。
国王总是询问:获胜次数最多的和获胜次数最少的有多大差距?(当热他不关心那些一次也没输入,一个串,表示球队获胜情况(保证串的长度<1000))
要求输入一个数字,表示出现次数最多的字母比出现次数最少的字母多了多少次。
比如:
输入:
abaabcaa
则程序应该输出:
4
解释:a出现5次,最多;c出现1次,最少。5-1=4;
再比如:
输入:
bbccccddaaaacccc
程序应该输出:
6

解题

#include"stdio.h"
#include"string.h"
int main()
{
 char a[1000];//用于输入字符串
 scanf("%s",a);
 int num_a=strlen(a);//计算字符串大小 
 
 int cont[1000],num=0,num_cont=0; //用于存放每个字符出现的个数 
 int i,j;
 
 char copy[1000];int num_c=1;  //用于去重 
 copy[num_c]=a[0];
 for(i=1;i<num_a;i++)
 {
         for(j=1;j<num_c+1;j++)
   {
      if(a[i]!=copy[j]&&j==num_c)
   {
      copy[++num_c]=a[i]; 
   }else if(a[i]==copy[j]) break;
   } 
 }         //去重完成
 
 for(i=1;i<num_c+1;i++)
 {
  num=0;
  for(j=0;j<num_a;j++)
  {
   if(copy[i]==a[j])
   {
    num++;
   }
  }
  cont[num_cont++]=num;
 }                   //计算每个元素出现的个数 
  
   int temp;
   for(i=0;i<num_cont;i++)
   {
       for(j=i+1;j<num_cont;j++)
       {
           if(cont[i]<cont[j])
           {
              temp=cont[j];
      cont[j]=cont[i];
      cont[i]=temp; 
   }
    }
 }   //每个元素个数按从大到小排序
 
 printf("%d",cont[0]-cont[num_cont-1]);
 return 0; 
}

第一次写 嘿嘿

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值