私信TA
用户名:DB1528488619
访问量:374
签 名:
自我简介:
作者: DB牛逼 发表时间:2021-04-18 20:27:44 浏览:189 | 评论:0
解题思路:直接看例子吧,可能不好理解,第一次写这个东西,
如:ABCDCCBA
刚开始 S=0,end=7
解决这个问题只要找 对称的字符串最大的长度:如:ABCDCCBA ===ABCCBA 所以答案就是8-6=2;
ABDCDCBABC===ABCDCBA 所以答案就是10-7=3;\
ABDCDB==BDCDB 所以答案就是6-5=1
拿案例来说ABDCDCBABC 一开始S=0,end =9,我是次后面往前找 知道arr[S]=arr[end],此时end =7,然后就把范围变[1,6]当然要把[2,6],[3,6]...[5,6]搞一并
我们要最大,思路就是这样,有思路代码就不重要
参考代码:
package cn.Db;
import java.util.Scanner;
public class Main {
static int[][] Arr;
public static void main(String[] args) {
Scanner Sc=new Scanner(System.in);
String str=Sc.nextLine();
Arr=new int[str.length()][str.length()];
int num=0;
for (int j =0; j <=str.length()-1; j++) {
num=Math.max(num,tion(str,j,str.length()-1));
}
System.out.println(str.length()-num);
//S为左索引的下标,end就是右病的
private static int tion(String str,int S,int end) {
if(S==end)return 1;
if(Arr[S][end]!=0)return Arr[S][end];
int teep=0;
for (int i =end; i>S; i--) {
if(str.charAt(i)==str.charAt(S)){
num+=2;
for (int j =S+1; j <=i-1; j++) {
Arr[j][i-1]=tion(str,j,i-1);
teep=Math.max(teep,Arr[j][i-1]);
num+=teep;
break;
return num;
0.0分
6 人评分
看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:
编程语言转换
万能编程问答
代码解释器
代码纠错
SQL生成与解释