字串分值和(蓝桥杯题目)

#include<stdio.h>#include<stdlib.h>#define N 26int Num_ber(char s[N])//实现题目函数{ int a[N]={0};//定义26个字母(相当于标记元素) int i=0,j,k,m=0; int sum=0;//定义字串分值和 while(s[i]!=’\0’)//统计字符串元素个数 { i++; } for(j=1;j<=i;j++)//依次对比字串元素 { for(k=j-1;k<i;k
摘要由CSDN通过智能技术生成

字串分值和问题分析:
题目
随机输入一串字符,列如:ababd;
计算字串分值和为:28;

个人分析:
1、首先我们根据题目可知要找出一个字符串所有组成可能的字串
列入abc可得{a,ab,abc,b,bc.c}
2、然后我们取字串第一个元素,对比后面的剩余的元素,如果元素第一次出现的话,我们认证它,再出现的话我们将不认证它(解决办法,我们定义初始26个字母都有0为代号,第一次执行时如果出现重新赋予1代号,以此类推就可以一一表示元素是否重复出现)
3、我们找到字串的最大不同元素个数后,我们可以分析知我们从第一个元素开始累加到最大值,刚好是除重复元素外的所有字串可能。
4、然后我们考虑重复元素,当我们找到重复元素时,我们可以发现加上重复元素后的值还是与前一元素组的值相同,则我们只要再原有的基础上再累加一边原值即可

代码如下:

#include<stdio.h>
#include<stdlib.h>
#define N 26
int Num_ber(char s[N])//实现题目函数
{
    
  int a[N]={
   0}<
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值