题目:https://vjudge.net/problem/Gym-101291A
把字符串分析得很全面的博客:https://blog.csdn.net/lxt_Lucia/article/details/81206439(内容真的很全面)
我的理解:
当时是真的无从下手,看了以后懂了。
动态规划的思想,由前一个推下一个直到最后一个。
选择前面比它小的数字里,这些数字前面num最大的+1,
这样一个个推下来,num最大的那一个就是答案。
用数字更好理解,其实字母也差不多。
当时样例的答案都看不明白,应该一步步想,这样可能就能想到动态规划了。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static long n;
static long half;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = input.nextLine();
int[] num = new int[s.length()];
Arrays.fill(num, 1);
for (int i = 1; i < s.length(); i++) {
for (int j = i - 1; j >= 0; j--) {
if (s.charAt(i) > s.charAt(j)) {
if (num[i] - 1 < num[j]) {
num[i] = num[j] + 1;
}
}
}
}
Arrays.parallelSort(num);
System.out.println((26 - num[s.length() - 1]));
}
}