字串分值和问题分析:
题目
随机输入一串字符,列如: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}<