本文主要是介绍蓝桥杯 密码脱落,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
X星球的考古学家发现了一批古代留下来的密码。
这些密码是由A、B、C、D 四种植物的种子串成的序列。
仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。
由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。
你的任务是:
给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。
输入一行,表示现在看到的密码串(长度不大于1000)
要求输出一个正整数,表示至少脱落了多少个种子。
例如,输入:
ABCBA
则程序应该输出:
0
再例如,输入:
ABECDCBABC
则程序应该输出:
3
资源约定:
峰值内存消耗 < 256M
CPU消耗 < 1000ms
刚开始看题没读懂什么意思,看了别人的才知道输入的字符串与镜像字符串相比多了一些字母。从两边向中间搜索,剔除镜像字符串多余的字符。
#include<stdio.h>
#include<malloc.h>
#include<string.h>int main(void)
{char *str;int legth=0,sum=0,j=0,i=0,temp_i=0,temp_j=0;str=(char*)malloc(1000*sizeof(char));gets(str);legth=strlen(str);i=0;j=legth-1;while(i!=j){if(*(str+i)==*(str+j)){i++;j--;}else{temp_i=i;temp_j=j;while(*(str+temp_i)!=*(str+j) && temp_i<=j){temp_i++;}while(*(str+i)!=*(str+temp_j) && temp_j>=i){temp_j--;}if(temp_i-i>=j-temp_j){sum+=j-temp_j;j=temp_j;}else{sum+=temp_i-i;i=temp_i;}}}printf("%d",sum);return 0;
}
这篇关于蓝桥杯 密码脱落的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!