fork download
  1. import java.util.*;
  2.  
  3. class Main
  4. {
  5. static int[][] answers;
  6. static String s;
  7.  
  8. static int calculate(int l, int r){
  9. if(l > r) return 0; //Если индекс левой границы отрезка больше индекса правой.
  10. if(answers[l][r] == -1){ //Если ответ для данного отрезка ещё не известен, находим его.
  11. answers[l][r] = s.length();
  12. if(s.charAt(l) == s.charAt(r)) answers[l][r] = Math.min(answers[l][r], calculate(l+1, r-1));
  13. for(int i = l; i < r; ++i){
  14. answers[l][r] = Math.min(answers[l][r], calculate(l, i) + calculate(i+1, r));
  15. }
  16. }
  17. return answers[l][r];
  18. }
  19.  
  20. public static void main (String[] args) throws java.lang.Exception
  21. {
  22. Scanner in = new Scanner(System.in);
  23. s = in.nextLine(); //Ввод строки.
  24.  
  25. answers = new int[s.length()][s.length()];
  26. //Заполнение массива начальными значениями.
  27. for(int i = 0; i < s.length(); ++i){
  28. for(int j = 0; j < s.length(); ++j){
  29. if(i == j) answers[i][j] = 1;
  30. else answers[i][j] = -1;
  31. }
  32. }
  33. //Вывод ответа.
  34. System.out.print(calculate(0, s.length()-1));
  35. }
  36. }
Success #stdin #stdout 0.06s 4386816KB
stdin
abccba
stdout
Standard output is empty