这是一道蓝桥杯省赛真题
需要处理两步:
1.截取子串 将ababc 截成 a ab aba abab ababc b ba…
2.计算各字串的不同字符数
#include "stdio.h"
int main()
{
int i=0;
int sum=0; //f和
int n=0;
char fx[100000]; //待处理字符串S
char gx[100000]; // S的分值
char ch;
while(ch=getchar())
{
if(ch=='\n')
{
break;
}
fx[i]=ch;
i++; //统计输入字符串S的长度
}
n=i;
for(int t=0;t<n;t++) //控制,截取的子字符串的首字符
{
for(i=t;i<n;i++) //控制,截取的子字符串的尾字符
{
for(int j=t;j<=i;j++) //截取子字符串
{
gx[j]=fx[j];
}
for(int j=t;j<=i;j++) //遍历字串的同时,将该字符之后与之相同的字符置0。
{ // 保证最后留下的是无重复字符的字符串 。
if(gx[j]==0) //遇到之前重复的字符被置0后跳过。
continue;
sum++;
for(int k=j+1;k<=i;k++) //查重
{
if(gx[k]==gx[j])
gx[k]=0;
}
}
}
}
printf("%d",sum);
return 0;
}