密码脱落
X星球的考古学家发现了一批古代留下来的密码。
这些密码是由A、B、C、D 四种植物的种子串成的序列。
仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。
由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。
你的任务是:
给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。
输入一行,表示现在看到的密码串(长度不大于1000)
要求输出一个正整数,表示至少脱落了多少个种子。
例如,输入:
ABCBA
则程序应该输出:
0
再例如,输入:
ABDCDCBABC
则程序应该输出:
3
资源约定:
峰值内存消耗 < 256M
CPU消耗 < 3000ms
以下为代码:
#include <stdio.h>
#include <string.h>
int apart(char a[],int min,int max)
{
static int num = 0;
int i = 0;
int t = 0;
int minl = 0;
int minr = 0;
if ((max-min) < 2 &&a[max] == a[min])
return num;
for (i=min; i<max; i++)
{
if(a[max] == a[i])
{
break;
}
}
t = i;
minl = i-min;
for (i=max; i>min; i--)
{
if(a[min] == a[i])
{
break;
}
}
minr = max-i;
num += minl<minr?minl:minr;
if (minl<minr)
apart(a,t+1,max-1);
else
apart(a,min+1,i-1);
}
int main()
{
char a[1000]={0};
int len = 0;
int i = 0;
scanf("%s",a);
len = strlen(a)-1;
i = apart(a,i,len);
printf("%d",i);
return 0;
}