蓝桥杯-密码脱落

时间:2022-09-10 11:12:01

X星球的考古学家发现了一批古代留下来的密码。
这些密码是由A、B、C、D 四种植物的种子串成的序列。
仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。
由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。

你的任务是:
给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。

输入一行,表示现在看到的密码串(长度不大于1000)
要求输出一个正整数,表示至少脱落了多少个种子。

例如,输入:
ABCBA
则程序应该输出:
0

再例如,输入:
ABECDCBABC
则程序应该输出:
3

资源约定:
峰值内存消耗 < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

package 二〇一七年三月十八日;

import java.util.Scanner;

public class _1010密码脱落 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
char[] arr = s.nextLine().toCharArray();
int N = f(arr, 0, arr.length-1);
System.out.println(N);
}


public static int f(char[] arr, int start, int len) {
if(start>len){
return 0;
}
if (arr[start] == arr[len]) {
return f(arr, start + 1, len - 1);
} else {
return Math.min(f(arr,start+1,len)+1, f(arr,start,len-1)+1); //+1是代表执行else时已经不相等了;所以+1是代表当前掉落的叶子
}

}
}